【发布时间】:2019-02-11 09:07:49
【问题描述】:
我在 Springboot2.1.2 中使用 Thymeleaf,但在访问模板中的会话属性时遇到问题。
代码如下:
这是控制器之一:
@GetMapping("/profile")
public String getProfile(HttpServletRequest request) {
HttpSession session = request.getSession(false);
String email = (String) session.getAttribute("userId");
User user = userService.getProfile(email);
session.setAttribute("user", user);
return "user/profile";
}
以及对应的view(html):
<body th:object="${session.user}">
//some code using the user object here...
</body>
当我运行应用程序时,我得到了异常:
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'session' available as request attribute
我也尝试了#session 和其他东西,但它们没有用。但是,在另一个控制器中,我可以使用 Model 访问该对象:
@GetMapping("/register/user")
public String registerUser(Model model) {
model.addAttribute("user", new User());
return "user/register";
}
视图是这样的:
<form th:object="${user}" method="post" action="#" th:action="@{/register/user}">
//some code using the user object...
</form>
这让我发疯,因为我能找到的所有教程都告诉我,我可以通过 ${session.something} 访问会话属性,实际上,它不起作用。
你能帮帮我吗?
【问题讨论】:
标签: java spring-boot thymeleaf