我在 Spring MVC 3 中遇到了一些奇怪的绑定问题。
我的控制器请求映射如下所示:
@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
它也User
被 Spring 绑定,因为它的属性值也被更新。
我将假设这是由于在两个对象中都有一个user
属性。@ModelAttribute
我认为在方法签名中使用表单BindingResult
之后UserEditForm
会阻止这种情况吗?对象是单独的实例,我的表单元素引用该UserEditForm
对象:
<@spring.bind "userEditForm.user.name" />
<input name="${spring.status.expression}" />
我注意到在生成的 HTML 中它输出:
<input name="user.name" />
将名称硬编码为userEditForm.user.name
给我错误,所以这不是前进的方向。
有没有办法阻止这种情况发生?