2011-05-09 82 views
4

我想从Spring 2.0迁移到Spring 3.0。迁移到Spring注释控制器和传统的onSubmit方法

此前我定义了一个控制器MyController继承自SimpleFormController并且有一些逻辑写在onSubmit方法中。所有使用处理程序方法的控制器都从MyController继承。因此,编写onSubmit的逻辑MyController用于执行所有请求。

现在当我迁移到注释控制器,其中我的控制器是一个简单的pojo,我如何确保每次执行onSubmit?一种方法是从所有控制器的所有处理器方法调用onSubmit。这很麻烦。

任何人都可以提出任何可行的解决方案。如注释formBackingObject@ModelAttribute确保所有请求的调用,是不是有一个类比onSubmit方法?

+1

这将有很大的帮助,如果你增加了一个精简的例子,你的问题,所以我们可以看到自己拥有什么。 – skaffman 2011-05-09 13:07:37

回答

0

注释您希望调用的方法。方法签名非常灵活。看看该文档的@RequestMapping

@RequestMapping(value={"/foo"}, method=RequestMethod.POST) 
public String myMethod(many options for parameters) {... 
0

好了,所以如果我理解正确的话想继承来继续当一个请求由控制器处理堆栈中发挥作用。您可以在@RequestMapping注释的POJO中扩展任何类,但您必须定义@override方法来注释它。你所做的一切基本上都是用重写方法中的参数调用super。如果你扩展一个带注释的类并且都声明为Controller,那么你会得到一个异常,因为这个路由将被定义多次。

它看起来像这样

public class Pojo{ 

    public String someBaseMethod(){ 
     return ""; 
    } 
} 

@Controller 
public class ChildController extends Pojo { 

    @Override 
    @RequestMapping("/do_it") 
    public String someBaseMethod() { 
     return super.someBaseMethod(); 
    } 
} 

一个很好的例子可以拿来用的组合物在继承。我甚至建议你使用过滤机制,如果它适用于执行常见操作。 AOP也可能是一个好工具。

相关问题