我發現了一些奇怪的結合問題與Spring MVC的3Spring MVC中綁定額外的對象
我的控制器請求映射是這樣的:
@RequestMapping
public String save(HttpServletRequest req,
@ModelAttribute("userEditForm") UserEditForm form,
BindingResult formBindingResult,
ModelMap model,
@ModelAttribute("session") AdminSession session) {
// some validation etc
}
的UserEditForm
:
public class UserEditForm {
private User user;
public User getUser() { ... }
public void setUser(User user) { ... }
}
AdminSession
:
public class AdminSession {
private User user;
public User getUser() { ... }
public void setUser() { ...}
}
發生了什麼事情是,當我提交表單時,Spring將綁定User
,如我在我的UserEditForm
對象中預期的那樣,但是,AdminSession
也具有受Spring約束的User
,因爲它的屬性值也被更新。
我打算假設它是由於在@ModelAttribute
對象中都有user
屬性。
我認爲在方法簽名中使用UserEditForm
表單後的BindingResult
會阻止它嗎?對象是獨立的情況下,我的表單元素引用UserEditForm
對象:
<@spring.bind "userEditForm.user.name" />
<input name="${spring.status.expression}" />
我注意到,在生成的HTML它的輸出:
<input name="user.name" />
硬編碼名稱爲userEditForm.user.name
給我的錯誤,所以這不是前進的方向。
無論如何阻止這種情況發生?
如果你要硬編碼的名字,我想你必須做一個完全合格的名稱,從模型屬性名稱開始。所以,在你的例子中,我期望 CodeChimp