Java 如何在控制器中使用相同的方法,接收抽象类?
我有5个不同的jsp和mvc spring表单。在每个表单的modelAttribute中,我都有一个特定的类(例如,dog、cat、mouse等)。每个表单都有一个提交按钮,我希望该请求将在控制器中以相同的方法提交。Java 如何在控制器中使用相同的方法,接收抽象类?,java,forms,jsp,spring-mvc,spring-roo,Java,Forms,Jsp,Spring Mvc,Spring Roo,我有5个不同的jsp和mvc spring表单。在每个表单的modelAttribute中,我都有一个特定的类(例如,dog、cat、mouse等)。每个表单都有一个提交按钮,我希望该请求将在控制器中以相同的方法提交。 在控制器中,我试图得到一个通用类(抽象)这样的动物。这给了我一个错误。我怎么能这样做 如果一只猫收到了一只猫,这很好。 谢谢 jsp: <form:form method="post" modelAttribute="Cat" action="../2/submit">
在控制器中,我试图得到一个通用类(抽象)这样的动物。这给了我一个错误。我怎么能这样做 如果一只猫收到了一只猫,这很好。 谢谢 jsp:
<form:form method="post" modelAttribute="Cat" action="../2/submit">
<form:checkbox path="attribute" />
<button type="submit">Submit</button>
</form:form>
我可以想出两种方法 技术:老派 在处理程序方法中使用类型为
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
}
您不应该统一请求处理程序方法,尽管使用了带有所需业务层的服务层,以便所有控制器都可以调用相同的业务逻辑。是的,但对于第二个解决方案,这是我试图避免的。我尽量避免每个表单都有一个@RequestMethod。我只需要一个submit方法,它可以接收“相同”类型的每个类,例如:animals。谢谢
@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
}