今天在使用@PathVariable 注解接受參數(shù)的時候赛惩,傳遞了一個版本號2.2.0,結(jié)果發(fā)現(xiàn)后臺中接收到的值為2.2焦除,原因是因為Spring MVC 預設(shè)會切掉最后一個點以后的字符串,應(yīng)該是在處理「*.do」這樣的 Url pattern 的關(guān)系。
解決方式:在 @PathVariable 里使用 Regular Expression 來配置 key 值的長相盹靴。
出錯代碼:
@RequestMapping(value = { "/versions/{version}" }, method = RequestMethod.DELETE) @ResponseBody public GeneralResult deleteVersion(@PathVariable String version,AppVersionForm form) throws ServiceException { ... }
改后代碼:
@RequestMapping(value = { "/versions/{version:[a-zA-Z0-9\\.]+}" }, method = RequestMethod.DELETE) @ResponseBody public GeneralResult deleteVersion(@PathVariable String version,AppVersionForm form) throws ServiceException { ... }