在EL表达式中访问spring Web应用程序上下文bean

时间:2010-10-26 14:18:26

标签: jsp spring-mvc

我是Spring MVC的新手并且遇到以下情况:

在WEB-INF / demoshop-servlet.xml中,我有以下一行:

<bean id="someBean" class="com.xxx.xxx.web.SomeBean" />

我还有一个包含如下行的JSP:

${someBean.someAttribute}

我期望在呈现页面时从bean读取属性,但事实并非如此。表达式被忽略了。 (正确评估控制器中ModelMap中引入的对象的其他EL表达式。)

为了稍微调试一下,我将以下内容插入到JSP中:

<% System.out.println(application.getAttribute("someBean")); %>

打印null

缺少什么,或者我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

Spring bean不会自动提供给JSP页面,您必须将bean放在适当的范围(应用程序,会话,请求或页面)中。你至少有这些选择:

  1. 将bean添加到Controller中的Model
  2. 扩展View类并将bean添加到Model

答案 1 :(得分:1)

这里有一个方法,你可以在没有Java代码的JSP文件中获取Spring bean。 设置Spring Web MVC XML文件并在viewResolver中添加1个属性:

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="exposeContextBeansAsAttributes" value="true"/>
</bean>

现在,您可以在JSP中获取bean内容:

<c:out value="${ bean.value }" />