2012-06-21 87 views
1

我有彈簧MVC 3.1控制器,一個界面,看起來像參數註釋

public interface RestCRUDOperations<T> { 
     @RequestMapping(value = "/{id:\\d+}", 
         method = RequestMethod.GET, 
         produces = "application/json") 
     public ResponseEntity<T> getById(@PathVariable("id") String sourcId); 
     //other code omitted 
    } 

我觀察到的是,在implementating類@RequestMapping註解仍然具有效力(沒有我不得不通過方法實現複製它),但@PathVariable沒有效果,直到我複製粘貼註釋在參數之前的相應位置。有人知道是否有解決辦法嗎?和/或春天承認這是一個錯誤,它打算修復什麼?

編輯: - 一種醜陋的方式可能是抽象類翻譯方法,即public abstract class RESTAdapter implements RestCRUDOperations爲這些方法提供最終實現,並委託給2個抽象方法,並且此抽象類是控制器擴展的內容。
我想要一些自動的東西。

回答

0

我所見過的所有註釋都非常相似。原因是,掃描它們的代碼僅檢查層次結構中最低級別的子級。

作爲一種解決方法,我建議在基類中編寫一個受保護的包裝方法。然後,您可以從實現此接口的基類或派生類中使用它。這與您的建議類似。

最後,作爲一個友好的建議,從純粹的結構角度來擴展其他控制器類可能是一個壞主意。你幾乎總是會後悔的。

+0

這工作正常,在新澤西州和界面上的@RequestMapping註解Spring MVC中正常工作。這似乎是一個非常武斷的事情,不工作。 –