我有5种不同的jsp和mvc弹簧形式。在每个表单的modelAttribute中,我有一个特定的类(例如,dog,cat,mouse等)。每个表单都有一个提交按钮,我希望该请求将在控制器中以相同的方法提交 在控制器中,我试图获得一般类(抽象)这样的动物。它给了我一个错误。我怎么能这样做?
如果收到猫,这样可以。 谢谢!
jsp:
<form:form method="post" modelAttribute="Cat" action="../2/submit">
<form:checkbox path="attribute" />
<button type="submit">Submit</button>
</form:form>
和控制器:
@RequestMapping(value = "/submit", produces ="text/html" ,headers = "Accept=" , method=RequestMethod.POST)
public String submitForm(@ModelAttribute Animal animal, Model m) throws IllegalArgumentException, IllegalAccessException {
return "";
}
答案 0 :(得分:0)
我可以想到两种技巧。
在处理程序方法中使用类型WebRequest
的参数。
这样可以访问请求参数。
然后查询您关心的参数以确定请求的来源并确定所需的参数。
@RequestMethod("/blammy")
public String blammy(
final ModelMap model,
final WebRequest webRequest)
{
String something = webRequest.getParameter("something");
if ("hoot".equals(something))
{
... process a hoot request
}
else if ("bark".equals(something))
{
... process a bark request
}
}
为每个表单证明了一种方法,然后将调用转发给常用方法。
@RequestMethod("/fish")
public String fish(
@ModelAttribute final Fish fish,
final ModelMap model)
{
return commonMethod(model, (Animal)fish);
}
@RequestMethod("/cat")
public String cat(
@ModelAttribute final Cat cat,
final ModelMap model)
{
return commonMethod(model, (Animal)cat);
}
public String commonMethod(
final ModelMap model,
final Animal animal)
{
... blam
}
答案 1 :(得分:0)
您不应该统一请求处理程序方法,尽管使用具有所需业务层的服务层,以便所有控制器都可以调用相同的业务逻辑。