@ MatrixVariable Spring 3.2 return Null

问题描述 投票:0回答:3

我正在使用Spring 3.2.6,以通过一个基本示例来学习@MatrixVariable功能。

我已经对该方法进行了编码,以从URI中获取矩阵变量:

@RequestMapping(value="/matrix/{paths}", method=RequestMethod.GET)
public ModelAndView MatrixVariableExample(@MatrixVariable Integer age){
    ModelAndView mv = new ModelAndView("affichageMatrix");
    mv.addObject("age", age);
    return mv;
}

我使用此URI:localhost:8080 / SpringMVC-Maven / matrix / user; age = 23

为age变量返回的值为null,但我应该为23

java spring maven spring-mvc url-routing
3个回答
1
投票

在弹簧配置文件中启用矩阵变量

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

0
投票

尝试像这样更改您的代码:

@RequestMapping(value="/matrix/{paths}", method=RequestMethod.GET)
public ModelAndView MatrixVariableExample(@PathVariable String paths, @MatrixVariable Integer age){
    System.out.println(paths); //or do something with it, at your choice
    ModelAndView mv = new ModelAndView("affichageMatrix");
    mv.addObject("age", age);
    return mv;
}

并使用URL:

http://localhost:8080/SpringMVC-Maven/matrix/user;age=23

您的变量paths现在应包含字符串user,并且age应该为23。我想如果您已经参数化了请求映射,就不能错过路径参数。


0
投票

要使用矩阵变量,您必须启用Spring MVC框架以在您的应用程序中读取矩阵变量。您可以使用XML表示法或通过Java配置来完成此操作

XML配置:通过在dispatcher-servlet.xml中添加以下配置]

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

Java配置:

public class AppInitializer  extends AbstractAnnotationConfigDispatcherServletInitializer{
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] {AppConfig.class};
    }
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }
    @Override
    protected String[] getServletMappings() {
        return new String[] {"/*"};
}}

@Configuration
@EnableWebMvc
@ComponentScan(basePackages= {"com.springmvc.test"})
public class AppConfig implements WebMvcConfigurer {
    @Bean
    public InternalResourceViewResolver resolver() {
        InternalResourceViewResolver resolver=new InternalResourceViewResolver();
        resolver.setViewClass(JstlView.class);
        resolver.setPrefix("/jsp/");
        resolver.setSuffix(".jsp");     
        return resolver;
    }
    public void configurePathMatch(PathMatchConfigurer configurer) {
        UrlPathHelper urlPathHelper=new UrlPathHelper();
        urlPathHelper.setRemoveSemicolonContent(false);
        configurer.setUrlPathHelper(urlPathHelper);
}}
© www.soinside.com 2019 - 2024. All rights reserved.