Spring MVC:@SessionAttributes在控制器之间共享?
发布时间:2020-12-15 01:45:06 所属栏目:大数据 来源:网络整理
导读:我有一个搜索和结果列表的抽象控制器支持类: @Controller@SessionAttributes("query")public abstract class SearchController 几个实际的搜索控制器扩展了这个基类. 在访问其中一个控制器(比如使用BookSearchQuery实现SearchQuery的/searchBooks.html)后,
我有一个搜索和结果列表的抽象控制器支持类:
几个实际的搜索控制器扩展了这个基类. 在访问其中一个控制器(比如使用BookSearchQuery实现SearchQuery的/searchBooks.html)后,查询将正确存储在会话中,可用于后续请求. 但是,当我访问另一个控制器(比如/searchAuthors.html使用AuthorSearchQuery实现SearchQuery)时,最后一个请求(BookSearchQuery)的查询仍在用于新控制器,导致稍后出现ClassCastException. 我已经尝试将@SessionAttribute注释从支持类移动到实现类,但无济于事. 有什么我做错了还是这个设计?我能做什么? 非常感谢! 最佳答案
使用@SessionAttributes,这些对象将以相同的名称存储在HttpSession中,并且可以从不同的控制器访问(共享)它们.所以,Spring正确行事.
我认为你的场景中最好的方法是在每个子类中重命名这个属性(“BookQuery”,“AutorQuery”,……).根本不是很优雅:( (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |