Spring形成控制器泛化

时间:2011-09-13 08:45:00

标签: java forms spring controller

当为spring mvc应用程序制作控制器时,我必须指定
每次我想从spring表单传递一个新的类实例时,一个新的方法:

@RequestMapping(method=RequestMethod.POST)
public String mainPost(@Valid MyClass myClass, 
        BindingResult result, Model model) {
    // do the same stuff each time here
}

所以我需要在我的应用程序中为每个可能的MyClass编写一个方法 可以传递给控制器​​,但所有这些方法完全相同的东西
(他们检查错误并将此对象传递给服务层)
如何将所有这些方法合并为一个?

我相信有一些类似于以下的解决方案(这不起作用):

@RequestMapping(method=RequestMethod.POST)
public <T> String mainPost(@Valid T myObject, 
        BindingResult result, Model model) {
    // check errors and pass the object myObject to a service layer
}

1 个答案:

答案 0 :(得分:3)

您不能拥有通用控制器方法,但可以创建通用控制器:

public abstract class AbstractController<T> {
    @RequestMapping(method=RequestMethod.POST) 
    public String mainPost(@Valid T myObject,
          BindingResult result, Model model) { ... } 
}

@Controller 
@RequestMapping("/myclass")
public class MyClassController extends AbstractController<MyClass> { ... }