今天做Spring mvc REST风格的crud时,在springmvc 表单标签<form:select> 遇到了400的问题

这是佟刚的视频:https://www.bilibili.com/video/av14907450/?p=31

 

这个是解决方案 ,但是原因没说清楚: https://www.cnblogs.com/yjq520/p/6755370.html

错误代码:


type Status report

message

description The request sent by the client was syntactically incorrect.


Apache Tomcat/7.0.47

SpringMVC form 表单提交报400错误

原因:

400 请求出错 
由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。
在 SpringMVC 中的 Action 中处理前台 ajax 请求传过来的 json 数据直接转成对应的实体类时出错:
400 Bad Request,后台也不报错,400指的的是请求无效(请求有语法问题或者不能满足请求)。

解决办法:

检查实体类的 javabean 里边的类型是否和 springmvc form 的 form 表单名是否一致。
我的错误原因是两个关联的实体类导致在 form 表单中 name 名称不一致:
Employee.java 
SpringMVC form 表单提交报400错误
    private Integer id;
    private String lastName;
    private String email;
    private int gender;
    private Department department;    

        //无参构造方法以省略

         //有参构造方法以省略

         //setter 和 getter 方法以省略
SpringMVC form 表单提交报400错误

Department.java

SpringMVC form 表单提交报400错误
private Integer id;
private String departmentName;

        //无参构造方法以省略

         //有参构造方法以省略

         //setter 和 getter 方法以省略
SpringMVC form 表单提交报400错误

form 表单:

SpringMVC form 表单提交报400错误
<!-- 
        可以通过 modelAttribute 属性指定绑定的模型属性,
        若没有指定该属性,则默认从 request 域对象中读取 command 的表单 bean,
        如果该属性值也不存在,则会发生错误
     -->
    <form:form action="emp-save" method="post" modelAttribute="employee">
        <!-- path 属性对应 HTML 表单标签的 name 属性 -->
        LastName:<form:input path="lastName"/> <br>
        Email:<form:input path="email"/> <br>
        Gender:<form:radiobuttons path="gender" items="${genders}"/> <br>
        Department:<form:select path="department" items="${dapartments}" itemLabel="departmentName" itemValue="id"></form:select><br>
        <input type="submit" value="Submit">
    </form:form>
SpringMVC form 表单提交报400错误

SpringMVC form 表单提交报400错误把 path="department" 改为 path="department.id"

 

 

 

原因:指明itemValue的这个id 时 employee.department.id  而不能是 employee.department

    path要正确配置,支持级联属性

SpringMVC form 表单提交报400错误

 

相关文章:

  • 2022-12-23
  • 2021-09-30
  • 2022-01-09
  • 2021-09-26
  • 2021-11-29
  • 2021-12-21
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-17
  • 2022-12-23
  • 2021-05-29
  • 2021-07-05
相关资源
相似解决方案