2011-05-09 54 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也可能是一個好工具。

相關問題