SpringBoot页面表单请求失败,错误400的解决办法

SpringBoot页面表单请求失败,错误400的解决办法

错误页面:

后台控制台提示:Request method 'POST' not supported

原因分析:

400错误一般指的是请求无效,请求有语法问题或者不能满足请求。

网上分析原因可能有以下:

1. 一般最常见的就是后台的实体类bean与前台穿过的类型不匹配
2. log4j的配置文件里错误将部分log打为Info级别所致
3. 要返回json的却忘了加@ResponseBody
4. 传了非实体bean属性的参数过来。
5. controller指定的参数名称与前台不一致,如:使用了@RequestParam(value="userName")而前台必须指定该名称

查看代码,发现我的POJO对象中有日期属性,问题果然是这里。

原先birth属性的set方法,是自动生成的,如下:

  public void setBirth(Date birth)  {      
            this.birth =birth;
    }

页面传来的参数都是String类型,我传入的参数格式是2018-03-12,在日期转换时发生了错误,页面请求失败。

如果未做任何处理时,springboot默认的日期格式是:2018/03/02

如果输入其他格式或者不输入就会请求失败,如:2018-02-01,2018.01.01

解决办法有两种:

1.直接修改set方法。设置日期格式。

  public void setBirth(String birth) throws ParseException {
      //自定义日期格式
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
      //如果没有传入日期,直接返回空值。
        if (StringUtils.isEmpty(birth)) {
            this.birth=null;
            return;
        }else{
            //将传入的日期,按照自定义格式转化后赋值。
            this.birth =sdf.parse(birth) ;
        }
    }

2.在application.properties中配置spring.mvc.date-format属性。

这样就可以顺利将参数注入POJO对象中了。

猜你喜欢

转载自blog.csdn.net/soap_leutenant/article/details/79632752