如何在JSP页面中注入userContext

时间:2015-08-04 13:14:47

标签: spring-mvc localization

如何在jsp文件中检索上下文的值?本教程非常适合我的需要,但我需要在jsp文件中检索属性值。

http://www.mkyong.com/spring/spring-listfactorybean-example/

我可以使用特定的拦截器吗?

2 个答案:

答案 0 :(得分:1)

userContext的bean(或源)注入控制器,以便可以在本地变量中访问它。

所以举个例子可能就是这样:

@Autowired
private CustomerBean customerBean;

@RequestMapping(value="/foobar/index.jsp")
public String (HttpServletRequest request) {
Object userContext = customerBean.getLists();
request.setAttribute("userContext", userContext);
return "/foobar/index.jsp";  // expecting JstlView viewResolver to map to JSP file
}

在CONTROLLER中只需将数据添加到HttpServletRequest(您只需将其作为参数添加到方法中以引入它)。

然后使用request.setAttribute("userContext", userContext);然后在JSP中使用表达式语言(如${userContext})轻松访问它。使用Spring模型范例还有其他方法,但它们可以有效地完成上述操作。

确保将JstlView设置为https://dzone.com/articles/exploring-spring-controller

有关如何在JSP中使用EL来检索附加到请求的数据的更多信息: How to obtain request / session / servletcontext attribute in JSP using EL?

答案 1 :(得分:1)

你指的是春天语境吗?

通常,JSP应该只是页面的模板,因此与后端的唯一交互应该是访问作用域属性的值。这意味着您需要的任何bean值都应存储在模型中。

这就是说,有几种方法可以让Spring bean暴露出去查看。取决于您使用哪个View解析器,扩展UrlBasedViewResolver的解析器具有setExposeContextBeansAsAttributes属性

  

设置是否在应用程序上下文中创建所有Spring bean   作为请求属性可访问,通过延迟检查一次   属性被访问。这将使所有这些bean都可访问   JSP 2.0页面中的简单$ {...}表达式,以及JSTL的c:out   价值表达。

     

默认为" false"。

您可以将其配置为

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
    <property name="exposeContextBeansAsAttributes" value="true" />
</bean>