2013-06-26 2 views
0

У меня есть сущность в моем приложении, у которой есть ID.
В моем контроллере я получаю эту сущность, используя @PathVariable таким образом:Spring @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); 
} 

, имеющие a URL-адрес: /application/2013/06

+0

Не возражаете против перенаправления http с фильтрами? – shazinltc

+1

Возможный дубликат переменных [Bind Path для пользовательского объекта модели весной] (http://stackoverflow.com/questions/17149425/bind-path-variables-to-a-custom-model-object-in-spring) – vincentks

+0

Ops ... Я не вижу этого ... так что вопрос можно закрыть ... спасибо – rascio

ответ

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"); 
}