代码之家  ›  专栏  ›  技术社区  ›  Wolfgang

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

  •  1
  • Wolfgang  · 技术社区  · 14 年前

    我刚接触Spring MVC,有以下情况:

    在web-inf/demoshop-servlet.xml中,我有以下行:

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

    我还有一个JSP,它包含一行,比如:

    ${someBean.someAttribute}
    

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

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

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

    哪个指纹 null .

    什么不见了,或者我在这里做错了什么?

    2 回复  |  直到 9 年前
        1
  •  1
  •   DwB    14 年前

    SpringBean不会自动提供给JSP页面,您必须将bean放在适当的范围内(应用程序、会话、请求或页面)。您至少有以下选项:

    1. 把豆子加到 Model 在你的控制器里
    2. 扩展 View 类并将bean添加到 模型 .
        2
  •  1
  •   Rajesh    9 年前

    这里有一个方法,可以在没有Java代码的情况下在JSP文件中获取Spring bean。 设置SpringWebMVC 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 }" />