13

我可以在 Spring MVC 中执行以下操作吗

假设我的 Base GenericController 如下所示,带有一个请求映射“/list”

@Controller
public class GenericController<T>{

    @RequestMapping(method = RequestMethod.GET, value = "/list")
    public @ResponseBody List<T> getMyPage(){
        // returns list of T
    }

}

下面是我的两个控制器

@Controller(value = "/page1")
public class Page1Controller extends GenericController<Page1>{

}

@Controller(value = "/page2")
public class Page2Controller extends GenericController<Page2>{

}

现在我将能够访问 URL“/page1/list”和“/page2/list”,其中第一个访问 Page1Controller,第二个访问 Page2Controller。

4

2 回答 2

14

这是不可能的,并且已经被拒绝,请参阅SPR-10089。我认为这会有些混乱,此外,除了不同的映射之外,这些方法的行为不太可能完全相同。但是您可以改用委托:

public class BaseController<T> {
    public List<T> getPageList(){
        // returns list of T
    }
}

@Controller(value = "/page1")
public class Page1Controller extends BaseController<Page1>{
    @RequestMapping(method = RequestMethod.GET, value = "/list")
    public @ResponseBody List<Page1> getMyPage() {
      return super.getPageList();
    }    
}

@Controller(value = "/page2")
public class Page2Controller extends BaseController<Page2>{
    @RequestMapping(method = RequestMethod.GET, value = "/list")
    public @ResponseBody List<Page2> getMyPage() {
      return super.getPageList();
    }
}
于 2013-04-17T15:44:20.893 回答
8

对于那些寻找与 Spring Framework 4.x 类似的东西的人,OP 提供的类层次结构是可能的。Github上提供了一个示例应用程序。它允许用户以 JSON 格式查看书籍列表或杂志列表。

于 2015-11-16T05:20:49.840 回答