所以问题应该非常简单.我有一个表单,GET和POST控制器方法和一个表单支持bean.
表格的相关部分:
<form:form modelAttribute="newUser" method="post" action="${signUpUrl}">
<table>
<tbody>
<tr>
<tr>
<td>Username: </td>
<td><c:out value="${userForEditBean.username}"/></td>
<td></td>
</tr>
<tr>
<td>Password</td>
<td><form:password path="password" size="20"/>
</td>
<td><form:errors path="password" cssClass="error"/></td>
</tr>
<tr><input id="submitUser" name="Submit" value="Submit" type="submit" />
</tbody>
</table>
</form:form>
GET方法
...
model.addAttribute("newUser", new SignUpBean());
model.addAttribute("test", new InjectTest());
...
POST方法
@RequestMapping(value = "/signup", method = RequestMethod.POST)
public String registerUser(@ModelAttribute("test") InjectTest injTest, @ModelAttribute("newUser") SignUpBean signUpBean, BindingResult bindingResult, Model model)
...
所以,当我点击提交我在模型中使用@ModelAttribute从模型中检索的所有bean都有一个字符串属性密码(这是signUpBean和injTest)在密码字段中具有相同的内容,这是我输入的密码进入表格.
我不希望这样,我只想填充标记有modelAttribute newUser的bean.
我使用的是Spring 3.2.6
最佳答案 向控制器添加一个注释InitBinder的方法,以防止密码绑定到InjectTest bean.
@InitBinder("test")
public void initBinder(WebDataBinder binder) {
binder.setDisallowedFields("password");
}