我正在使用2.5版本,并通过注释完成所有操作。
我有一个简单的表单,允许用户编辑对象。该表单后面的控制器会在GET请求时创建对象并将其添加到模型中,在POST(提交)时处理更改。它工作得很好,但我不明白为什么。对象从未被显式地添加到会话中,对象的"id"值也没有传递给submit方法。控制器的submit方法是如何知道对象的"id"值的?
出现这个问题的原因是我有另一个表单/控制器,几乎与上面的表单相同,但如果我不将对象添加到@SessionAttributes中,它就无法正常工作。区别在于这个特定控制器所使用的对象具有对另一个对象的引用,而该对象是延迟加载的 (我在幕后使用Hibernate)。当我在没有将父对象放入SessionAttributes的情况下提交表单时,我会收到DataIntegrityViolationException异常,因为我从未加载引用对象。
当我将父对象添加到@SessionAttributes中时,这个问题神奇地消失了。我之所以说神奇,是因为即使我在GET请求时将父对象放入会话中,我仍然从未显式地加载引用对象,因此应该为null (或空代理或发生其他情况)。
这到底是怎么回事?我需要帮忙!
我有一个简单的表单,允许用户编辑对象。该表单后面的控制器会在GET请求时创建对象并将其添加到模型中,在POST(提交)时处理更改。它工作得很好,但我不明白为什么。对象从未被显式地添加到会话中,对象的"id"值也没有传递给submit方法。控制器的submit方法是如何知道对象的"id"值的?
出现这个问题的原因是我有另一个表单/控制器,几乎与上面的表单相同,但如果我不将对象添加到@SessionAttributes中,它就无法正常工作。区别在于这个特定控制器所使用的对象具有对另一个对象的引用,而该对象是延迟加载的 (我在幕后使用Hibernate)。当我在没有将父对象放入SessionAttributes的情况下提交表单时,我会收到DataIntegrityViolationException异常,因为我从未加载引用对象。
当我将父对象添加到@SessionAttributes中时,这个问题神奇地消失了。我之所以说神奇,是因为即使我在GET请求时将父对象放入会话中,我仍然从未显式地加载引用对象,因此应该为null (或空代理或发生其他情况)。
这到底是怎么回事?我需要帮忙!