gpt4 book ai didi

java - Spring MVC @SessionAttributes 困惑!

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:04:55 27 4
gpt4 key购买 nike

我正在使用 2.5 并通过注释完成所有操作。

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

出现这个问题的原因是我有另一个几乎与上面的相同的表单/ Controller ,但除非我将对象添加到@SessionAttributes,否则它不会“工作”。区别在于这个特定 Controller 使用的对象引用了另一个延迟加载的对象(我在幕后使用 Hibernate)。当我在没有将父对象放入 SessionAttributes 的情况下提交表单时,我会收到 DataIntegrityViolationException,因为我从未加载引用的对象。

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

世界上发生了什么事?我需要一些帮助!

最佳答案

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

你应该小心 session 属性,我总是尽量避免它,除非我有很好的理由。与 Hibernate 结合使用时,它会产生各种令人头疼的问题。

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

关于java - Spring MVC @SessionAttributes 困惑!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/830017/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com