2015-05-21 42 views
0

喜歡在標題中,你知道一些可能性在@RequestMapping下設置全部@PathVariable的全局正則表達式嗎?例如:是否有可能在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}},但我想將其設置爲5月的地方。另外我有配置,我不想改變:

@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);的意義,這有留在spring配置。

回答

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; 
    } 
} 
考慮您的正則表達式