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属性设置
RequestMappingHandlerMappingfalse。默认情况下,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实例。