@RequestMapping(value = "/newLoadtest/{loadtest}", method = RequestMethod.POST)
public @ResponseBody void addNewLoadTest(@PathVariable("loadtest") String loadtest) {
System.out.println(loadtest);
}
这是我编写的代码,如果可以说loadtest字符串是" test.version" 。由于某种原因,这段时间不起作用。它打印出" test"仅
我认为这里的问题可能是对网址进行编码,但我不知道该怎么做。请帮忙
答案 0 :(得分:0)
它的spring是避免URI中任何后缀的聪明方法。您有两种方法可以禁用它。
在路径变量定义后添加“:。+”。
ng-app
另一种方式是 使用您自己的“DefaultAnnotationHandlerMapping”并禁用“useDefaultSuffixPattern”为false。
答案 1 :(得分:0)
检查以下Spring reference的引用:
默认情况下,Spring MVC自动执行“。”后缀模式匹配,以便映射到/ person的控制器也隐式映射到/ person。。这允许通过文件扩展名指示内容类型,例如,然而,常见的缺陷是当映射的最后一个路径段是URI变量时,例如,/ person.pdf,/ person.xml等。 /人/(编号)。虽然对/person/1.json的请求将正确地导致路径变量id = 1和扩展名“.json”,但当id自然包含点时,例如/person/joe@email.com结果与预期不符。显然,这里“.com”不是文件扩展名。
如果您不想使用扩展内容协商,可以在下面的代码configurer.setUseSuffixPatternMatch(false);
中通过此行禁用它,或者我认为以下解决方案最好只使用已注册的后缀,这取决于您的需求
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
//configurer.setUseSuffixPatternMatch(false);//this will disable all suffices from negotiation
configurer.setUseRegisteredSuffixPatternMatch(true);
}
}