这是我的控制器的一部分:
@RequestMapping(value="/json/getPCs/{serverAddress}", method=RequestMethod.GET)
public @ResponseBody List<PC> getPCForServerJSON(@PathVariable String serverAddress) {
logger.info("Server address: " + serverAddress);
return PCManager.findByServer(serverManager.findByAddress(serverAddress));
}
在浏览器中,我访问了网址http://localhost:8080/test/pc/json/getPCs/192.168.200.1
INFO : net.example.test.PCController - Server addres: 192.168.200
如果我使用斜杠到URL http://localhost:8080/test/pc/json/getPCs/192.168.200.1/
就可以了:
INFO : net.example.test.PCController - Server addres: 192.168.200.1
为什么呢?我想使用url而不用斜杠。
答案 0 :(得分:1)
将RequestMappingHandlerMapping
配置为创建PatternsRequestCondition
个实例(与您的路径段匹配),而不添加匹配的后缀。
在WebMvcConfigurationSupport
中,覆盖以下
@Override
public RequestMappingHandlerMapping requestMappingHandlerMapping() {
RequestMappingHandlerMapping mapping = super.requestMappingHandlerMapping();
mapping.setUseSuffixPatternMatch(false);
return mapping;
}
默认情况下启用该配置参数(true
)
如果启用了映射到&#34; / users&#34;也匹配&#34; / users。*&#34;。
所以你的路径段
{serverAddress}
实际上是匹配
{serverAddress}[.].*
// ^ literally a dot
所以给出了值
192.168.200.1
仅捕获
192.168.200
禁用它会为您提供所需的行为。