只有當蔬菜名稱不是胡蘿蔔或豆類或洋蔥時,我纔想訪問該方法,所以如果我給番茄它應該返回視圖。我使用的Url如下是否有任何錯誤的這個網址?Spring MVC中@RequestMapping()的正則表達式
@RequestMapping("/**/vegetables/{name:^[carrot|beans|onions]}")
public String vegetablesNames(){
return "vegetables";
}
只有當蔬菜名稱不是胡蘿蔔或豆類或洋蔥時,我纔想訪問該方法,所以如果我給番茄它應該返回視圖。我使用的Url如下是否有任何錯誤的這個網址?Spring MVC中@RequestMapping()的正則表達式
@RequestMapping("/**/vegetables/{name:^[carrot|beans|onions]}")
public String vegetablesNames(){
return "vegetables";
}
您應該驗證方法內:
@RequestMapping("/vegetables/{name}")
public String vegetablesNames(@PathVariable String name){
if (name.matches("your regex") {
throw new RuntimeException(name + " doesn't match");
}
return "vegetables";
}
@PathVarialbe
是從請求URI
中提取的變數。你可以提取它並隨意玩。
基本上,路徑應描述在該uri處可用的資源。如果資源不可用,則響應應該是例如NOT_FOUND
。在Spring
中,對導致RuntimeException
的請求的默認響應是5xx
,在這種情況下這不是一個好選擇,但這僅僅是一個示例。
如果您有興趣處理Exceptions
的Spring
,只需要澄清。
沒問題。恕我直言,路徑應該描述一般格式,但不包含業務(或驗證)邏輯。內部驗證可以使用正則表達式,與列表進行比較,針對數據庫等進行檢查,並且將更容易更改,而不是路徑變量。 – Kayaman
將它作爲@PathVariable並檢查函數內容會不會更容易? RegExp是一件很大的事情,如果可以的話,我寧願避免它們。 – Peter777