2015-05-21 4 views
0

Как и в названии, вы знаете некоторую возможность установить глобальное регулярное выражение на всех @PathVariable весной под @RequestMapping? Например:Возможно установить глобальный шаблон регулярного выражения на springMVC @PathVariable?

@RequestMapping(value = "/view/{id:[a-z]{5}|[1-9]{7}}", method = RequestMethod.GET) 
    @PreAuthorize("hasRole('XXXX')") 
    public String viewId(@PathVariable String id, Model model) { 
     ... 
    } 

Я не хочу, чтобы установить регулярное выражение как локально {id:[a-z]{5}|[1-9]{7}}, но я хочу, чтобы установить его в мае местах. Кроме того, у меня есть конфигурации, которые я не хочу менять:

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages = {"com.xxxx.yyy.zzz.controller.formatters"}) 
public class MediaPortalWebConfig extends WebMvcConfigurationSupport { 
@Override 
    @Bean 
    public RequestMappingHandlerMapping requestMappingHandlerMapping() { 
     RequestMappingHandlerMapping requestMappingHandlerMapping = super.requestMappingHandlerMapping(); 
     requestMappingHandlerMapping.setUseSuffixPatternMatch(false); 
     return requestMappingHandlerMapping; 
    } 
} 

Так что я знаю, что есть смысл setUseSuffixPatternMatch(false); и это должно остаться в конфигурации пружины.

ответ

0

Вы можете написать собственный контур пути, например. CustomRegexPathMatcher путем расширения по умолчанию AntPathMatcher и опрокинув его метод doMatch так что рассмотрим ваше регулярное выражение при выполнении согласования с URL

Чем бы вы включить его как

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages = {"com.xxxx.yyy.zzz.controller.formatters"}) 
public class MediaPortalWebConfig extends WebMvcConfigurationSupport { 
@Override 
    @Bean 
    public RequestMappingHandlerMapping requestMappingHandlerMapping() { 
     RequestMappingHandlerMapping requestMappingHandlerMapping = super.requestMappingHandlerMapping(); 
     requestMappingHandlerMapping.setUseSuffixPatternMatch(false); 
     requestMappingHandlerMapping.setPathMatcher(new CustomRegexPathMatcher()); 
     return requestMappingHandlerMapping; 
    } 
} 
Смежные вопросы