Spring @PathVariable创建自定义对象

时间:2013-06-26 12:27:29

标签: spring http-request-parameters

我的应用程序中有一个具有组合 ID 的实体 在我的控制器中,我以这种方式使用@PathVariable来获取此实体:

@RequestMapping("/{year}/{code}")
public MyCustomObj get(@PathVariable Integer year, @PathVariable Integer code){
    return myCustomObjRepository.findOne(new CustomId(year, code));
}

是否可以使用WebArgumentResolver之类的组件来使我的方法以这种方式工作:

@RequestMapping("/{customObj}")
public MyCustomObj get(@PathVariable CustomId id){
    return myCustomObjRepository.findOne(id);
}

拥有以下网址:/application/2013/06

1 个答案:

答案 0 :(得分:1)

您可以通过注册自定义过滤器并覆盖doFilterMethod来执行此操作,如下所示。

 public void doFilter(ServletRequest arg0, ServletResponse arg1,
        FilterChain chain){
 HttpServletRequest request = (HttpServletRequest) arg0;
 HttpServletResponse response = (HttpServletResponse) arg1;
 String args = request.getRequestURI();
 //get your year and code
 MyCustomObj obj = new CustomId(year, code);
 response.sendRedirect("someURL/obj");
 }