RestFul風格 — 使用@PathVariable傳遞參數報錯404的解決
@PathVariable傳遞參數報錯404
代碼:
@RequestMapping("/test1/{a}/{b}") public String test1(@PathVariable int a, @PathVariable int b, Model model){ int res=a+b; model.addAttribute("msg",res); return "test"; }
報錯:
錯誤原因:視圖解析器配置配置中,前綴少寫瞭一個 “/” .
正確:
<!--視圖解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <!--前綴--> <property name="prefix" value="/WEB-INF/jsp/" /> <!--後綴--> <property name="suffix" value=".jsp" /> </bean>
restFul風格傳參, 參數中帶斜杠/問題
今天遇到一個restful接口路徑傳參問題,我的接口路徑傳參帶斜杠,這樣和restful地址就不一致瞭報404錯誤,然後看到這樣一個解決方法,親測可用。
@GetMapping("user/find/by/{name}/**") public String getMapping(@PathVariable String name, HttpServletRequest request){ String path = request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE).toString(); String path2 = request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE).toString(); String args = new AntPathMatcher().extractPathWithinPattern(path2, path); return name + "/" + args; }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- spring mvc中@PathVariable / 帶斜杠方式獲取
- 如何替換@PathVariable中的變量
- Spring5路徑匹配器PathPattern解析
- 如何讓Spring Rest 接口中路徑參數可選
- 如何利用Spring MVC實現RESTful風格