java无法将ModelMap添加到会话
我想分享登录信息到另一个方法,但不知道如何。所以我用
spring注释@SessionAttributes
在控制器中,并尝试addAttribute
删除
将user
保存到ModelMap
。但是当我在另一种方法中使用@ModelAttribute
我的浏览器抛出:
500 - Expected session attribute 'user'
这是我的控制器:
@Controller
@RequestMapping("/login")
@SessionAttributes("user")
public class Login {
@Resource
private UserSer userSer;
@RequestMapping("/main")
@ResponseBody
public String login (@RequestBody User user, ModelMap map) {
boolean result = userSer.login(user);
String view = "fail";
if(result) {
map.addAttribute("user", user);
view = "success";
}
return view;
}
//It doesn't work
@RequestMapping("/logout")
public String logout(@ModelAttribute("user") User user) {
System.out.println(user.getUsername());
return "success";
}
}
我需要配置网络吗。xml
# 1 楼答案
从登录方法中删除@ResponseBody。使用@ResponseBy时,返回值直接写入响应。在这种情况下,Spring没有时间创建会话对象并保存到模型属性