如在登录时设置@SessionAttributes("user")对象,在其它Controller的方法里要通过@ModelAttribute("user")取该对象,同时参数里有表单对象:
[code="java"]public Map save(@ModelAttribute("user")User user, Orders form){
...
}[/code]
表单里有和User对象相同的属性,其值会被覆盖,为啥InternalResourceViewResolver没有[b]allowSessionOverride[/b]属性设置不许覆盖,而FreeMarkerViewResolver却有?
如何设置@SessionAttributes对象不被覆盖?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答
- jinnianshilongnian 2013-01-30 08:54关注
1、freemarker等非JSP模板没有request、session等概念,只有模型的概念,
按你说的allowSessionOverride表示是否允许session属性覆盖模型数据,默认是false,即不允许,如果重名则抛异常
2、EL表达式如${a.id} 默认先从pageContext--->request--->session--->application
[code="java"] /**
* Set whether HttpSession attributes are allowed to override (hide)
* controller generated model attributes of the same name. Default is "false",
* which causes an exception to be thrown if session attributes of the same
* name as model attributes are found.
*/
public void setAllowSessionOverride(boolean allowSessionOverride) {
this.allowSessionOverride = allowSessionOverride;
}[/code]3、如在登录时设置@SessionAttributes("user")对象,在其它Controller的方法里要通过@ModelAttribute("user")取该对象,同时参数里有表单对象:
建议session里的登录用户使用如loginUser 等不同的标识符来存储,和普通的区分开本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥35 平滑拟合曲线该如何生成
- ¥100 c语言,请帮蒟蒻写一个题的范例作参考
- ¥15 名为“Product”的列已属于此 DataTable
- ¥15 安卓adb backup备份应用数据失败
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 自己瞎改改,结果现在又运行不了了
- ¥15 链式存储应该如何解决
- ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站