与@RequestParam相比,@ MatrixVariable有什么优势?

时间:2018-08-26 18:31:42

标签: java spring spring-mvc spring-boot spring-data

我在本文http://www.kscodes.com/spring-mvc/spring-mvc-matrix-variable-example/中读到的一个好处是,可以将变量类型Map用于矩阵变量,而在使用@RequestParam时不能使用此类型。除此之外,还有其他原因为什么我应该使用@MatrixVariable而不是@RequestParam

谢谢

1 个答案:

答案 0 :(得分:2)

@RequestParam不同,@MatrixVariable由分号;分隔,多个值由逗号,分隔。阅读其文档:

  

注释,指示方法参数应绑定到路径段内的名称/值对。支持带注释的RequestMapping处理程序方法。

有很多示例和用法变体。这里有一些例子:

  • URL:localhost:8080/person/Tom;age=25;height=175和控制器:

    @GetMapping("/person/{name}")
    @ResponseBody
    public String person(
        @PathVariable("name") String name, 
        @MatrixVariable("age") int age,
        @MatrixVariable("height") int height) {
    
        // ...
    }
    
  • 它甚至可以映射到String[]

    URL:localhost:8080/person/Tom;languages=JAVA,JAVASCRIPT,CPP,C和控制器

    public String person(
        @PathVariable("name") String name, 
        @MatrixVariable("languages") String[] languages) {
    
        // ...
    }