如何使用@ModelAttribute参数注释在会话中保存模型?

时间:2016-10-22 16:31:35

标签: spring-mvc session session-variables modelattribute

在我的控制器建议中,我在HttpSession会话中放置了一个模型对象:

Map<String, Game> gamesMap = new HashMap<>();
gamesMap.put("1", new Game());

Games games = new Games();
games.setGames(gamesMap);

session.setAttribute("games", games);

当我尝试使用@ModelAttribute参数games.getGames()获取该对象时,返回总是为null而不是之前设置的gamesMap。

RequestMapping(value = "test", method = RequestMethod.GET)
public String test(@ModelAttribute("games") Games games) {
   games.getGames(); // getGames() returns null instead of collection I've set before.
}

我做错了吗?当我使用session并从那里得到它它工作正常,但我试图理解为什么它不适用于更清洁的@ModelAttribute。

1 个答案:

答案 0 :(得分:0)

好的,我发现了问题所在。如果控制器使用@sessionattributes注释,Spring仅尝试将模型属性绑定到会话参数。如果它没有找到它创建新实例,那么地图为空。