@MatrixVariable Spring 3.2 return Null

matrixvariable spring boot
matrix parameters
spring boot version matrix
urlpathhelper example

I'm using Spring 3.2.6 in order to learn the @MatrixVariable feature with a basic example.

I have coded this method to get the matrix variable from the 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;

I use this URI : localhost:8080/SpringMVC-Maven/matrix/user;age=23

The value returned for the age variable is null, but I it should be 23

Enable Matrix Variables in spring config file:

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

java - @MatrixVariable Spring 3.2 return Null, Spring @MatrixVariable tutorial shows how to parse URL parameters with <​artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> getRootConfigClasses() { return null; } @Override protected Class<?>  As you'd expect, in writing code to handle Matrix Variables, the Guys at Spring are building upon the existing Spring MVC framework by introducing the new @MatrixVariable annotation. This is used to annotate request handler method arguments so that Spring can inject the relevant bits of the matrix uri.

Try to change your code like this:

@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;

And use URL:


Your variable paths should now contain string user, and age should be 23. I guess you're not allowed to miss path parameters if you have already parametrized your request mapping.

Spring @MatrixVariable tutorial, Matrix variables support became available in Spring MVC 3.2 and is meant to public void configurePathMatch(PathMatchConfigurer configurer) { used for giving values and the semicolon(';') for delimiting each matrix variable. return new ResponseEntity<List<Employee>>(employeesList, HttpStatus. Whether the matrix variable is required. Default is true, leading to an exception being thrown in case the variable is missing in the request. Switch this to false if you prefer a null if the variable is missing. Alternatively, provide a defaultValue(), which implicitly sets this flag to false.

To use matrix variable you have to enable Spring MVC framework to read matrix variable in your application. You can do it using either XML notation or by java configuration

XML configuration: By adding below configuration in dispatcher-servlet.xml

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

Java Configuration:

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

@ComponentScan(basePackages= {"com.springmvc.test"})
public class AppConfig implements WebMvcConfigurer {
    public InternalResourceViewResolver resolver() {
        InternalResourceViewResolver resolver=new InternalResourceViewResolver();
        return resolver;
    public void configurePathMatch(PathMatchConfigurer configurer) {
        UrlPathHelper urlPathHelper=new UrlPathHelper();

A Quick Guide to Spring MVC Matrix Variables, Essayez de changer votre code comme ceci: @RequestMapping(value="/matrix/{​paths}", method=RequestMethod.GET) public ModelAndView  Spring Data query methods usually return one or multiple instances of the aggregate root managed by the repository. However, it might sometimes be desirable to create projections based on certain attributes of those types. Spring Data allows modeling dedicated return types, to more selectively retrieve partial views of the managed aggregates.

java - @MatrixVariable Spring 3.2 return Null, spring-issuemaster opened this issue on Jun 22, 2014 · 10 comments GET) public void findPet(@PathVariable String petId, @MatrixVariable int q) { // petId == 42 // q == 11 } Affects: 3.2.6, 3.2.9, 4.0 GA, 4.0.5, 5.0.7 Why does in the first case omitting the matrix part from the path (i.e. returning a without the ;b=c) is the  Matrix variables support became available in Spring MVC 3.2 and is meant to simplify requests with a large number of parameters. In this article, we will show how we can simplify complex GET requests that use either variable or optional path parameters inside the different path segments of a URI.

@PathVariable & @MatrixVariable do not work as documented , My last blog on Spring's support for Matrix Variables concentrated on explaining what @MatrixVariable has four arguments: value, defaultValue, pathVar and return outlist; Blogs on Investigating Deadlocks · Blogs Dealing With Null Return Values · Read the blog in Portuguese · Why Captain Debug? Earlier versions of Spring Data Elasticsearch used a Jackson based conversion, Spring Data Elasticsearch 3.2.x introduced the Meta Model Object Mapping. As of version 4.0 only the Meta Object Mapping is used, the Jackson based mapper is not available anymore and the MappingElasticsearchConverter is used.

Just What Are Spring 3.2 Matrix Variables , The Spring Web model-view-controller (MVC) framework is designed around a In this particular example the method accepts a Model and returns a view name GET) public void findPet(@PathVariable String petId, @MatrixVariable int q) Spring MVC 3.2 introduced Servlet 3 based asynchronous request processing. z, ? toggle help (this) space, → next slide: shift-space, ← previous slide: d: toggle debug mode ## <ret> go to slide # c, t: table of contents (vi) f: toggle footer

  • @user3600061 Some questions: 1) Do you really enter the method (can be checked by debugger)? 2) What's with the variable paths?
  • Yes, the paths value is returned : paths = user
  • Ok, I have two more guesses: the original example from Spring tutorial used int, not Integer. This is unlikely to be important, but still worth trying. Second: you may want to specify path and matrix variable names: @MatrixVariable(value="age", pathVar="paths")