springMVC怎么判断有没有传递某个参数?

@Controller
public class NaviPageController {
    @RequestMapping("navi")
    public String navi(ModelMap modelMap,String fid,String cid){
        
        
        return "list";
    }
}

有两种url传递方式,
navi?fid=1
navi?fid=1&cid=2

怎么判断是哪种url请求过来的啊?

阅读 9.1k
3 个回答
@Controller
public class NaviPageController {
    @RequestMapping("navi")
    public String navi(ModelMap modelMap,@RequestParam String fid,@RequestParam(required=false)String cid){
        if(cid == null){
            //handling code
        }else{
            //other handling code
        }
        
        return "list";
    }
}

在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取
该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;

所以按你描述,cid并不是必填的,所以配置required=false

你可以通过这样的方式获取url后面的参数
@Controller
public class NaviPageController {

@RequestMapping("navi")
public String navi(HttpServletRequest request){
    Map<String, String[]> paramtersMap = request.getParameterMap();//url后面的参数都在map里
    paramtersMap.get("fid");
    paramtersMap.get("cid");
    return "list";
}

}

@RequsetMapping有一个params属性,作用是使请求更精确
比如@RequestMapping(value="/navi",params={"cid"}) :只有当请求参数中有cid的时候才进到目标方法。
如果你对SpringMVC的知识不是很理解,可以看一下这个:SpringMVC知识详解

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题