ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java-Spring MVC @SessionAttributes混乱!

2019-12-10 17:01:15  阅读:203  来源: 互联网

标签:session java spring-mvc


我正在使用2.5,并通过注释进行所有操作.

我有一个简单的表格,允许用户编辑对象.它后面的控制器创建对象并将其添加到GET上的模型中,并在POST(提交)上处理更改.它工作正常,但我不明白为什么.该对象永远不会显式添加到会话中,并且该对象的“ id”不会传递给Submit方法.控制器的Submit方法如何知道对象的“ id”值?

出现此问题的原因是,我有另一个与上面的表单/控制器几乎相同的表单/控制器,但是除非将对象添加到@SessionAttributes,否则它不会“起作用”.区别在于此特定控制器使用的对象具有对另一个延迟加载的对象的引用(我在后台使用Hibernate).当我提交表单而不将父对象放在SessionAttributes中时,我得到了DataIntegrityViolationException,因为我从不加载引用的对象.

当我将父对象添加到@SessionAttributes时,问题神奇地消失了.我神奇地说是因为即使我将父对象放入GET会话中,我仍然从未显式加载引用的对象,因此它应该为null(或空代理或发生任何情况).

到底是怎么回事?我需要协助!

解决方法:

该对象最有可能在提交阶段重新创建.该ID可能“存储”在隐藏的表单字段中.

您应该谨慎使用会话属性,除非我有很好的理由,否则我总是尽量避免使用它.与Hibernate结合使用可导致各种头痛.

如果必须,请使用完全初始化的副本.

标签:session,java,spring-mvc
来源: https://codeday.me/bug/20191210/2103129.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有