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。

推薦閱讀: