我在一个jsp页面上有两个表单。第一种形式不使用modelAttribute,第二种形式使用modelAttribute。问题是,如果我发布我不使用的第一个表单,modelAttribute将声明一个我没有绑定modelAttribute的错误。
我在网上搜索过寻找解决方案,但我找不到一个有用的方法。
changeAddress.jsp
<form method="post">
<input type="hidden" name="id" value="0" />
<input type="submit" name="exist" value="send to this address" />
</form>
<form:form method="post" modelAttribute="addressForm">
<form:input path="street" />
<input type="submit" name="add" value="send to this address" />
</form:form>
OrderController.java
@RequestMapping(value="changeAddress",method = RequestMethod.GET)
public ModelAndView showChangAddress(Model model)
{
model.addAttribute("addressForm", new AddressForm());
return new ModelAndView("body.changeaddress");
}
@RequestMapping(value="changeAddress", params="add", method = RequestMethod.POST)
public ModelAndView addChangAddress(@ModelAttribute("addressForm") @Valid AddressForm af, BindingResult result, Model model)
{
System.out.println("a");
return new ModelAndView("body.changeaddress");
}
@RequestMapping(value="changeAddress", params="exist", method = RequestMethod.POST)
public ModelAndView processChangAddress(@RequestParam(value="id") String id, Model model)
{
System.out.println("b");
return new ModelAndView("body.changeaddress");
}
很多需要帮助的人:)
答案 0 :(得分:3)
关于<form>
标记的弹簧形式标记库documentation :
此标记呈现HTML“表单”标记,并公开内部标记的绑定路径以进行绑定。它将命令对象放在PageContext中,以便内部标记可以访问命令对象。
我认为您的第一个表单中的spring <form>
标记不需要任何内容。因此,您可以使用简单的html表单:
<form method="post" action="...">
<input type="hidden" name="id" value="0" />
<input type="submit" name="exist" value="send to this address" />
<form>