【问题标题】:How can I bind JSP page and session scoped field of the controller?如何绑定 JSP 页面和控制器的会话范围字段?
【发布时间】:2014-03-17 15:35:56
【问题描述】:

我有一个带有范围注释的简单控制器。

@Controller
@Scope("session")
@RequestMapping("/")
public class HelloController {

    private User user = new User("Bob");

    @RequestMapping(method = RequestMethod.GET)
    public String printWelcome() {
        return "hello";
    }
}

简单的jsp页面

<html>
<body>
    <h1>Y=${sessionScope.user}</h1>
    <h1>Z=${user}</h1>
</body>
</html>

但是当我试图运行这段代码时,我什么也得不到。结果是空的。我不想使用User 的单个bean,也不喜欢将HttpSession 的对象传递给控制器​​中的方法或HttpServletRequest 对象以从中检索会话。有没有使用一些注释(@SessionAttributes 除外)将对象从我的控制器传递给 jsp 的解决方案?

【问题讨论】:

  • 从您给定的代码中,您在任何范围内都没有任何 sessionScope 属性:页面、请求、会话、应用程序。相反,您可能有一个 ${helloController} 如果曾经初始化。
  • ${helloController} 已经在会话中了吗?
  • 正如我所说,它会被初始化。
  • 曾经 = 从不?老实说,我也不关注你。
  • 您可以考虑提交给这个问题的答案stackoverflow.com/questions/13276391/…

标签: java spring jsp spring-mvc


【解决方案1】:

我不明白你为什么感到惊讶。您的代码中唯一位于 HttpSession 中的是 @Controller bean。

仅仅因为该对象具有User 类型的字段并不意味着HttpSession 中会有User 属性。

结果为空。我不想使用 User 的单个 bean,我也是 不喜欢将HttpSession 的对象传递给控制器​​中的方法或 HttpServletRequest 用于从中检索会话的对象。有没有 使用一些注解(@SessionAttributes除外)通过的解决方案 从我的控制器反对jsp?

您基本上已经列出了所有选项。使用其中任何一个。

【讨论】:

  • 我认为还有其他选择。
  • @user3279337 你总是可以自己制作一个,Spring 可以这样定制。但在某个地方,您需要致电HttpSession#setAttribute(..)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多