zoukankan      html  css  js  c++  java
  • Spring MVC中 提交表单报错400

    背景:

      在写SpringMVC表单提交的代码的时,在最后点击提交的时候总是会出现400的错误

    原因:

      主要原因就是表单提交的数据和对应实体类的属性无法完全匹配

    解决方案:

      查看我们提交的数据是否完全和对应的实体类进行完全的匹配,

    我的示例代码:

      实现的表单的截图:

      表单中的代码:  

    <form:form action="emp" method="POST" modelAttribute="employee">
        
            LastName:<form:input path="lastName"/>
            <br>
            Email:<form:input path="email"/>
            <br>
            <%
                Map<String,String> genders = new HashMap<>();
                genders.put("1","Male");
                genders.put("0","Female");
                request.setAttribute("genders", genders);
            %>
            Gender:
            <br>
            <form:radiobuttons path="gender" items="${genders}" delimiter="<br>" />
            <br>
            Department:<form:select path="department"
                                    items="${departments }" itemLabel="departmentName" itemValue="id"></form:select>
            <br>
            <input type="submit" value="Submit"/>
        </form:form>

    对应实体类的代码:

    public class Employee {
    
        private Integer id;
    
        private String lastName;
    
        private String email;
        //1 male, 0 female
        private Integer gender;
        
        private Department department;
        
    
    .................省略了对应的get和set方法,和有参无参构造器..................
    }

     通过以上信息我们可以看出问题是出在了表单中最后一项的department

    前端页面显示的是department的名字,但是表单提交的是department的id,所有我们应该将: 

    path="department" 修改为:path="department.id"

    出现这个问题的主要原因是我对
    form:select 标签没有完全理解里面的属性和使用方法
  • 相关阅读:
    拼接数组的几种方法
    小议GetHashCode()方法
    如何在窗体间传递数据!
    设置TextBox控件的滚动条位置
    关于Console.Read()方法的一些误解!
    从内存布局角度谈谈值类型和引用类型!
    在Windows线程中模拟其他用户上下文!
    将文本插入TextBox控件的光标位置!
    用C#实现屏幕键盘!
    CLR的程序集定位算法
  • 原文地址:https://www.cnblogs.com/revel171226/p/SpringMVC.html
Copyright © 2011-2022 走看看