一个jsp中的多个表单

时间:2013-01-03 10:44:36

标签: java forms spring jsp multiple-forms

我在一个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");
}

很多需要帮助的人:)

1 个答案:

答案 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>