@MatrixVariable的使用

@MatrixVariable的使用

博客分類:
 

在Spring3.2 後,一個@MatrixVariable出現了,這個註解的出現拓展了URL請求地址的功能。
Matrix Variable中,多個變量能夠使用「;」(分號)分隔,例如: app

Java代碼   收藏代碼
  1. /cars;color=red;year=2012  


若是是一個變量的多個值那麼能夠使用「,」(逗號)分隔 ui

Java代碼   收藏代碼
  1. color=red,green,blue  


或者能夠使用重複的變量名: spa

Java代碼   收藏代碼
  1. color=red;color=green;color=blue  



下面來一個例子說明: blog

Java代碼   收藏代碼
  1. //請求URL: GET /pets/42;q=11;r=22  
  2. @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET)  
  3. public voidfindPet(@PathVariableString petId, @MatrixVariable intq) {  
  4. // petId == 42  
  5. // q == 11  
  6. }  


再複雜一點就是這個例子: rem

Java代碼   收藏代碼
  1. // GET /owners/42;q=11/pets/21;q=22  
  2. @RequestMapping(value = "/owners/{ownerId}/pets/{petId}", method = RequestMethod.GET)  
  3. public voidfindPet(  
  4. @MatrixVariable(value="q", pathVar="ownerId") intq1,  
  5. @MatrixVariable(value="q", pathVar="petId") intq2) {  
  6. // q1 == 11  
  7. // q2 == 22  
  8. }  


針對每個Parh Variable綁定一個Matrix Variable,而後使用 value 和 pathVar屬性就能找到該值。
另外,正對Matrix Variable也是能夠指定自身的的屬性,例如,是否必須,默認值。
下面這個例子說明: get

Java代碼   收藏代碼
  1. // GET /pets/42  
  2. @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET)  
  3. public voidfindPet(@MatrixVariable(required=true, defaultValue="1") intq) {  
  4. // q == 1  
  5. }  



最後說明一下,若是要開啓Matrix Variable功能的話,必須設置 RequestMappingHandlerMapping 中的 removeSemicolonContent 爲false.
通常狀況不用你手動去設置這個屬性,由於這個屬性默認就是false ,若是你遇見Matrix Variable功能未開啓的時候就能夠看看是否是誤設置這個屬性爲true了。

結束博客

相關文章
相關標籤/搜索