Spring MVC缺少矩阵变量
问题内容:
我正在尝试使用SpringMVC(从Spring boot 1.2.3.RELEASE)向我的Rest
Controller添加一个矩阵参数(或矩阵变量),这是我的代码:
@RestController
public class SubAgentsController {
@RequestMapping(value = "/{subagents}", method = RequestMethod.GET)
public SubAgent subAgents(@MatrixVariable(value="agentName", pathVar="subagents") String agentName) {
System.out.println(agentName);
}
}
不幸的是,当我尝试获取: http:// localhost:8080 / subagents; agentName =
hello
那就是我收到的答案:
发生意外错误(类型=错误的请求,状态= 400)。
字符串类型的方法参数缺少矩阵变量“ agentName”
我做错什么了 ?根据http://docs.spring.io/spring-
framework/docs/3.2.0.M2/reference/html/mvc.html应该可以工作的:-(
感谢您的回答!
问题答案:
作为您链接到状态的文档,
请注意,要启用矩阵变量的使用,必须将的
removeSemicolonContent
属性设置
RequestMappingHandlerMapping
为false
。默认情况下,true
除了MVC命名空间和MVC
Java配置外,它均设置为,这两者都会自动启用矩阵变量的使用。
如果您通过扩展来配置应用程序WebMvcConfigurationSupport
,则请覆盖requestMappingHandlerMapping
准备的方法RequestMappingHandlerMapping
并设置其适当的属性。
@Override
public RequestMappingHandlerMapping requestMappingHandlerMapping() {
final RequestMappingHandlerMapping requestMappingHandlerMapping = super.requestMappingHandlerMapping();
requestMappingHandlerMapping.setRemoveSemicolonContent(false); // <<< this
return requestMappingHandlerMapping;
}
一切准备就绪。
使用Spring
Boot,我想您所需要的就是@Bean
用上述方法声明一个方法,即。返回一个RequestMappingHandlerMapping
实例。