2012-06-21 90 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中正常工作。这似乎是一个非常武断的事情,不工作。 –