gpt4 book ai didi

spring-mvc - 如何在sitemesh装饰器中获取模型属性或spring的bean?

转载 作者:行者123 更新时间:2023-12-03 10:00:22 25 4
gpt4 key购买 nike

我正在使用带有站点网格的 Spring 3。我想在 sitemesh 中定义的装饰器页面中引用 spring 上下文 bean。

问题是 SiteMesh 过滤器在 Spring 上下文之外工作,因此 sitemesh 装饰器 jsp 页面上的请求对象是 native HttpServletRequest 而不是具有访问上下文等有用功能的包装器。

有没有办法以某种方式配置 spring 和 sitemesh 以访问装饰器页面中的 Spring 上下文?

最佳答案

我遇到了同样的问题,并通过使用过滤器解决了我的问题。我创建了一个环境过滤器,可用于为所有请求设置环境数据。在过滤器中 Autowiring 您需要访问的 bean。

@Component
public class EnvironmentFilter extends OncePerRequestFilter {

@Autowired
Object bean;

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {

request.setAttribute("bean", bean); // add bean or just specific properties of bean.

filterChain.doFilter(request, response);

}

}

在 web.xml 中配置过滤器,确保使用与 Sitemesh 过滤器相同的过滤器映射模式。
<filter>
<filter-name>environmentFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
<filter-name>environmentFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

从您的过滤器设置的属性现在可从您的装饰器页面获得。

关于spring-mvc - 如何在sitemesh装饰器中获取模型属性或spring的bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3952755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com