@MatrixVariable相对于@RequestParam有哪些优势?

4
我正在阅读这篇文章:http://www.kscodes.com/spring-mvc/spring-mvc-matrix-variable-example/,其中提到的一个优点是您可以在使用@MatrixVariable时使用变量类型Map,而在使用@RequestParam时无法使用此类型。但除此之外,还有其他原因可以让我使用@MatrixVariable而不是@RequestParam吗?
谢谢。
1个回答

3
@RequestParam 不同,@MatrixVariable 使用分号 ; 作为分隔符,多个值使用逗号 , 分隔。请阅读其文档:

此注释表示应将方法参数绑定到路径段内的名称-值对。适用于RequestMapping已标注的处理程序方法。

该注释有许多用法和变化。以下是一些示例:

  • URL: localhost:8080/person/Tom;age=25;height=175 and Controller:

    @GetMapping("/person/{name}")
    @ResponseBody
    public String person(
        @PathVariable("name") String name, 
        @MatrixVariable("age") int age,
        @MatrixVariable("height") int height) {
    
        // ...
    }
    
  • It can be even mapped to String[].

    URL: localhost:8080/person/Tom;languages=JAVA,JAVASCRIPT,CPP,C and Controller

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

好的,那么另一个优点是您可以将数组作为matrix variable值发送。这是与@RequestParam相比的唯一优点吗?还是还有其他优点?感谢您的回答。 - Maurice
另外,如果您不介意的话,能否给我一个使用示例?一个清晰地展示其优势而不是使用@RequestParam的例子。 - Maurice
@Maurice: 我已经包含了两个示例,更多的可以在谷歌上找到(我建议你查看 @MatrixVariable usages example 关键词下的 ProgramCreek)。此注解可轻松映射由逗号和分号分隔的多个或可变数量的值。 - Nikolas Charalambidis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接