问题是我有一个弹簧形式和2个@ModelAttribute参数,它们在控制器中具有相同的属性。表单的'commandName'参数设置为我的modelAttributes名称之一。令我惊讶的是,该映射不仅将属性映射到用'commandName'指定的模型属性,而且还映射到第二个属性。
除了与我的相似之外,我在这里没有找到确切的解决方案:具有相同模型属性名称属性的弹簧形式的多个表单
但是在我的情况下,我看不到任何“奇怪的东西”,我有一个表单,一个绑定此表单的模型属性,以及一个对控制器范围内的@SessionAttribute拥有权限的模型属性。我也尝试过使用表单的'modelAttribute'参数(实际上我看不到它们之间的任何区别),但这没有帮助。
我的代码示例:
view.jsp:
<form:form name="form" action="/myAction" method="POST" commandName="model1">
<form:input path="property"/>
....
<input type="submit" value="Submit"/>
</form:form>
Controller.java
@SessionAttributes("model2")
class Controller {
@RequestMapping(value = "/myAction", method = POST)
public String submitEditSite(final @ModelAttribute(value = "model1") Model1 model1,
final @ModelAttribute(value = "model2") Model2 model2) {
....
return "redirect:/home";
}
}
Model1.java Model2.java
class Model1 {
private String property;
}
class Model2 {
private String property;
}
我哪里错了?
如果我对您的理解正确,那么您想阻止在上设置任何属性model2
,对吗?然后应该这样做:
@InitBinder("model2")
public void initBinder(WebDataBinder binder) {
binder.setDisallowedFields("*");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句