今天做项目写后台,打算用

/id;start=1;end=10

的形式来传递参数,自然想到使用@MatrixVariable注解将参数绑定到控制器的方法参数上。但是请求一直失败。查资料,有人说配置文件启动MVC注解的地方得加入如下属性

<annotation-driven enable-matrix-variables="true" />



但我用的是编程方式,未用配置文件。后来找到一个方法管用:



我的配置类RestServletContextConfiguration继承WebMvcConfigurerAdapter配置类



覆盖它的configurePathMatch方法



@Override
public void configurePathMatch(PathMatchConfigurer configurer){
UrlPathHelper urlPathHelper = new UrlPathHelper();
urlPathHelper.setRemoveSemicolonContent(false);
configurer.setUrlPathHelper(urlPathHelper);
}



后就可以绑定矩阵参数了。看了一下文档,大概意思是由于removeSemicolonContent的属性为true,请求过来的url自动处理掉了分号带的内容,在上述函数中将属性设为false即可工作。