zoukankan      html  css  js  c++  java
  • SpringMVC form 表单提交报400错误

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

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

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

    错误代码:

    HTTP Status 400 -


    type Status report

    message

    description The request sent by the client was syntactically incorrect.


    Apache Tomcat/7.0.47

    原因:

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

    解决办法:

    检查实体类的 javabean 里边的类型是否和 springmvc form 的 form 表单名是否一致。
    我的错误原因是两个关联的实体类导致在 form 表单中 name 名称不一致:
    Employee.java 
    复制代码
        private Integer id;
        private String lastName;
        private String email;
        private int gender;
        private Department department;    
    
            //无参构造方法以省略
    
             //有参构造方法以省略
    
             //setter 和 getter 方法以省略
    复制代码

    Department.java

    复制代码
    private Integer id;
    private String departmentName;
    
            //无参构造方法以省略
    
             //有参构造方法以省略
    
             //setter 和 getter 方法以省略
    复制代码

    form 表单:

    复制代码
    <!-- 
            可以通过 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>
    复制代码

    把 path="department" 改为 path="department.id"

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

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

  • 相关阅读:
    RabbitMQ的ACK机制
    Flex保存文件 FileReference.save(data,filename)
    Flex Builder cannot locate the required debugger version of Flash Player
    Flex每日小记
    IT民工
    R读取文件内容到Frame
    ArcGIS9.2 9.3
    超时空的心情
    ArcMap中设置.mxd相对路径
    MyEclipse Flex Tomcat BlazeDS
  • 原文地址:https://www.cnblogs.com/heyboom/p/11327987.html
Copyright © 2011-2022 走看看