当为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
}
答案 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> { ... }