具有正则表达式的Spring URI模板模式

Asp*_*1de 6 java spring spring-mvc

嘿有人知道怎么能用@RequestMapping匹配这个URI"http:// localhost:8080/test/user/127.0.0.1:8002:8".

我尝试编写这段代码:

@RequestMapping(value = "/user/{id}", method = RequestMethod.GET, 
        headers = "Accept=application/xml")
public void test(@PathVariable("id") String id) {
    System.out.println(id);
    return null;
}
Run Code Online (Sandbox Code Playgroud)

但问题是,当我打印id时,值为:127.0.0也许是什么东西?

awe*_*old 12

请参阅SpEL文档:http://static.springsource.org/spring/docs/3.0.5.RELEASE/reference/expressions.html

你会想做这样的事情:

@RequestMapping(value = "/user/{id:.*}", method = RequestMethod.GET,headers="Accept=application/xml" )
public void test(@PathVariable("id") String id) {
Run Code Online (Sandbox Code Playgroud)


Tom*_*icz 5

如果你在@ConfigurationSpring MVC 中使用-style,这将有助于:

@Configuration
public class Api extends WebMvcConfigurationSupport {

    @Bean
    public RequestMappingHandlerMapping requestMappingHandlerMapping() {
        RequestMappingHandlerMapping mapping = super.requestMappingHandlerMapping();
        mapping.setUseSuffixPatternMatch(false);
        return mapping;
    }

}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,你必须禁用useSuffixPatternMatchRequestMappingHandlerMapping.

也可以看看: