从JSP文件中的会话范围bean访问数据

Pie*_*ter 5 spring jsp spring-mvc

我正在尝试在Spring Web MVC 3中开始使用会话范围的bean.我将此行放在我的调度程序配置中:

<bean id="userInfo" class="net.sandbox.sessionbeans.UserInfo" scope="session" />
Run Code Online (Sandbox Code Playgroud)

这是net.sandbox.sessionbeans.UserInfo:

package net.sandbox.sessionbeans;

public class UserInfo {
    public String username;

    public UserInfo() {
        this.username = "Unregistered User";
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在代表我的应用程序的View部分的JSP文件中访问会话范围的bean?我试过这个......

<p align="right">${userInfo.username}</p>
Run Code Online (Sandbox Code Playgroud)

......但这并没有给我预期的结果,即

<p align="right">Unregistered User</p>
Run Code Online (Sandbox Code Playgroud)

相反,我得到了

<p align="right"></p>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

sin*_*pop 11

您可以在问题中显示它.问题可能出在您的配置中.看看你是否在视图中公开你的bean,如下所示:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/view/" />
    <property name="suffix" value=".jsp" />
    <property name="exposeContextBeansAsAttributes" value="true" />
</bean>
Run Code Online (Sandbox Code Playgroud)


Pie*_*ter 1

该答案部分基于问题评论中发布的一些建议,但后来被发帖者删除。我将其添加到需要使用该 bean 的每个 JSP 页面中:

<jsp:useBean id="userInfo" scope="session" class="net.sandbox.sessionbeans.UserInfo" />
Run Code Online (Sandbox Code Playgroud)

然后我发现这篇文章详细介绍了如何在 JSP 页面中使用 beans。

  • 这是错误的。`&lt;jsp:useBean /&gt;` 给出一个 jsp 会话 bean。这与 Spring 应用程序上下文中的不同。 (9认同)