Required string parameter ‘XXX‘ is not present

一、错误描述

写了一个页面登录的方法,在进行页面登录的时候,控制台会报类似Required String parameter 'XXX' is not present 错误。

1.错误信息

控制台日志打印:  Required String parameter 'loginname' is not present

2.错误说明

Required String parameter 'loginname' is not present    所需的字符串参数“loginname”不存在

3.错误代码

   /**
     * 页面登录
     * @author JacaCao
     */
    @RequestMapping(value = "/login.do")
    public String login(         
            @RequestParam("loginname") String loginname,
            @RequestParam("password") String password,
            Model model){
        logger.info("登录名:"+loginname+"密码:"+password);
        User user = UserService.login(loginname, password);
        if (user!=null){
                model.addAttribute("user",user);            
            }else{
                // 设置登录失败提示信息
                model.addAttribute("message", "登录名或密码错误!请重新输入");
        }     
        return "loginForm";
    }

二、解决方案

在参数传值的过程中经常会遇到传值类型不一致或者参数不存在的情况,就会报required string parameter 'XXX' is not present的错误,只需要在注解@RequestParam,添加value="paramter",required=false就可以了,即使没传参数对象也不会报错。

  controller类中,在注解@RequestParam,添加value="paramter",required=false。

   /**
     * 页面登录
     * @author JacaCao
     */
    @RequestMapping(value = "/login.do")
    public String login(         
            @RequestParam(value = "loginname",required = false) String loginname,
            @RequestParam(value = "password",required = false) String password,
            Model model){
        logger.info("登录名:"+loginname+"密码:"+password);
        User user = UserService.login(loginname, password);
        if (user!=null){
                model.addAttribute("user",user);            
            }else{
                // 设置登录失败提示信息
                model.addAttribute("message", "登录名或密码错误!请重新输入");
        }     
        return "loginForm";
    }