关于SpringMVC @RequestMapping和 @PathVariab?400报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

关于SpringMVC @RequestMapping和 @PathVariab?400报错

爱吃鱼的程序员 2020-06-02 13:52:46 68

关于SpringMVC @RequestMapping和 @PathVariable 的一个疑问? 400 报错

在springmvc注解的@RequestMapping("/username/{username}/userid/{userid}")如何处理默认值的情况,比如我在发送请求的时候,userid有时候是没有的,所以导到了不能匹配这个action

http://localhost:8080/spc/movie/username/winzip/userid/就不能匹配上面的请求:

http://localhost:8080/spc/movie/username/winzip/userid/33而这个才可以匹配。有没有一种

如果没有userid就取默认值 的处理办法;

分享到
取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-06-02 13:53:06

    引用来自“wtsoftware”的答案

    那比如在咱们以前的action中先判断空再决定处理逻辑的手段就不能用了呗。
    你这个需求,不如直接用Get提交算了,用@RequestMapping干嘛呢?
    ###### @RequestMapping("/username/{username}/userid/")######

    简单来说不可以,原因就是你说的,因为如果少了PathVariable,URL就不一样了。

    复杂一点来说Spring 用 AntPathMatcher 这个 class 来读取URL里面的PathVariable,你可以继承 AntPathMatcher 加入你自己需要的逻辑。

    我觉得还是用 @RequestParam 比较简单

    ######同意楼上。######那比如在咱们以前的action中先判断空再决定处理逻辑的手段就不能用了呗。######只能说明你的url设计不合理######

    可以这样设计:比如请求为:

     1:http://localhost:8080/mybatis/search/searchResultList/222/1/0

      // @RequestMapping(value="/searchResultList/{condition}/{zhaiyaoStatu}/{classfiyStatu}",method={RequestMethod.GET})
    // public String searchResultList2(@PathVariable String condition,@PathVariable  String zhaiyaoStatu,@PathVariable  String classfiyStatu)
     2:http://localhost:8080/mybatis/search/searchResultList//1/0

    // @RequestMapping(value="/searchResultList/{zhaiyaoStatu}/{classfiyStatu}",method={RequestMethod.GET})
    // public String searchResultList1(@PathVariable  String zhaiyaoStatu,@PathVariable  String classfiyStatu)

     

     一个对应一个就OK!测试通过!缺点就是多一个 “/”。嘿嘿!

    ######什么时候能像 @RequestParam(value="id", required=false) 或者 @MatrixVariable(required=true, defaultValue="1") 这样就好了!期待!!! ######

    引用来自“DemoChen”的答案

    什么时候能像 @RequestParam(value="id", required=false) 或者 @MatrixVariable(required=true, defaultValue="1") 这样就好了!期待!!!
    确实需要这样的,很有用,期待spring mvc的支持
    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章