我想将一个List存储到一个会话中,这样我就可以访问它,并根据请求在单独的控制器中添加/删除/删除对象。我目前有一个正在创建列表并将其输出到JSON的Controller,然后使用AngularJS从jsp页面对其进行访问。我已尝试通过将列表添加到模型来使用@SessionAttributes,但是列表存储不正确。我是SpringMVC的新手,因此希望在哪里找到任何建议/建议。我的控制器创建我的列表:@RestController@SessionAttributes({"URLparam", "usersList"})public class ReportController { @RequestMapping(value="/events") public List<Appliance> getEvents(@ModelAttribute("URLparam")String userInput, ModelMap model){ List<Appliance> events = new ArrayList<>(); events = ProcessChoice.ofList(userInput); model.addAttribute("usersList", events); System.out.println(userInput); return events; }}我要编辑现有列表的控制器:@Controller@SessionAttributes("usersList")public class EditListController { @RequestMapping(value="/testing", method=RequestMethod.GET) public String makeChanges(@RequestAttribute("usersList") List<Appliance> usersList) { //make changes to list here for(Appliance p: usersList) { System.out.println(p.getName()); } return "testing"; }}就目前而言,代码将抛出:error 400 - Missing request attribute 'usersList' of type List我可以看到有一个向模型添加collection 的选项,但是我不确定如何存储它,因为它不允许我给它命名。 最佳答案 在ReportController中,您将列表(“事件”)存储在键“ usersList”下的模型中。该模型充当可以在视图中呈现的数据。这样,它就不会存储到会话中。考虑类似:session.setAttribute(“ usersList”,events);在ReportController中,以及对应的session.getAttribute(“ usersList”)在EditListController中。您也可以通过这种方式省略@ SessionAttributes-annotation。如果要使用这些注释,请在以下位置熟悉它们的范围(放在哪里以及在哪里使用它们)和用法:http://vmustafayev4en.blogspot.de/2012/10/power-of-springs-modelattribute-and.html和此处的官方api文档:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/SessionAttributes.html和但是,将数据存储在会话中似乎是一个好主意,但是如果有许多活动会话,这通常是应用程序占用大量内存的原因-众所周知。关于java - 如何在springMVC Web应用程序中将对象列表存储到 session ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42533315/
10-11 15:08