springMVC 400 错误总结

1.参数名称本身对不上的情况

后台接受参数名称为 a,前台传递参数为 b,当然你的情况不会差别这么打,你可能只是某个字母弄错了,比如 前台传递为 word,后台接受为 wrod。

2.多传递了参数

比如我们向后台传递一个实体对象参数:这个对象里面有只有2个参数 id、name,而你传递的参数里面多加了一个 age,这种也是会报错的。

package com.fafree.entity.query;

import java.io.Serializable;

public class UserQuery implements Serializable {
    private static final long serialVersionUID = 1L;
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

3.@RequestBody 接受对象里面,如果已经有了非空构造函数,那么它同时必须要有默认的空构造函数,注意这个构造函数一定要为空

4.一个包含了@RequestBody 和 @RequestParam 绑定的 ajax 例子:

  1. @RequestBody 对应的实体

    package com.fafree.entity.query;
    
    import java.io.Serializable;
    
    // 如果已经有了带参数的构造函数,那么必须添加无参数的构造函数
    public class SysUserQuery implements Serializable {
    
        public SysUserQuery() {
            super();
        }
    // 有参数的构造函数
        public SysUserQuery(Long id, Long organizationId, String username, String password, String salt, String roleIds,
                Boolean locked) {
            super();
            this.id = id;
            this.organizationId = organizationId;
            this.username = username;
            this.password = password;
            this.salt = salt;
            this.roleIds = roleIds;
            this.locked = locked;
        }
    
        /**
         *  主键 -> id
         */
        private Long id;
    
        /**
         *  组织 id -> organization_id
         */
        private Long organizationId;
    
        /**
         *  用户名称 -> username
         */
        private String username;
    
        /**
         *  密码 -> password
         */
        private String password;
    
        /**
         *  盐 -> salt
         */
        private String salt;
    
        /**
         *  角色 id -> role_ids
         */
        private String roleIds;
    
        /**
         *  是否锁定:0否,1是 -> locked
         */
        private Boolean locked;
    
        /**
         * This field was generated by MyBatis Generator.
         * This field corresponds to the database table sys_user
         *
         * @mbggenerated
         */
        private static final long serialVersionUID = 1L;
    
        public String getCredentialsSalt() {
            return username + salt;
        }
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public Long getOrganizationId() {
            return organizationId;
        }
    
        public void setOrganizationId(Long organizationId) {
            this.organizationId = organizationId;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username == null ? null : username.trim();
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password == null ? null : password.trim();
        }
    
        public String getSalt() {
            return salt;
        }
    
        public void setSalt(String salt) {
            this.salt = salt == null ? null : salt.trim();
        }
    
        public String getRoleIds() {
            return roleIds;
        }
    
        public void setRoleIds(String roleIds) {
            this.roleIds = roleIds == null ? null : roleIds.trim();
        }
    
        public Boolean getLocked() {
            return locked;
        }
    
        public void setLocked(Boolean locked) {
            this.locked = locked;
        }
    
        @Override
        public String toString() {
            return "SysUser {"
                    + "id=" + id + ","
                    + "organizationId=" + organizationId + ","
                    + "username=" + username+ ","
                    + "password=" + password + ","
                    + "salt=" + salt + ","
                    + "roleIds=" + roleIds + ","
                    + "locked=" + locked
                    + "}";
        }
    }
  2. ajax请求

    function loadData(pageNum, pageSize) {
         // 设置请求的 url
         var url = "${ctx}/user/list-content?pageNum=" + pageNum + "&pageSize=" + pageSize;
        $.ajax({
            url:url,
            type:'POST',
            contentType: "application/json; charset=utf-8",
            // 请求参数可以比对象里面的少,但是不能多
            data:JSON.stringify({username:"dada"}),
            dataType:'html',
            async:true,
            success: function(result){
                $("#list_content_div").empty();
                $("#list_content_div").append(result);
            },error:function(){
                alert("error");
            }
        });
    }
  3. 后台接受方法

    @RequestMapping(value="/list-content", method = {RequestMethod.POST, RequestMethod.GET})
        public String listContent(Model model, @RequestBody SysUserQuery query,
                @RequestParam(value = "pageNum", defaultValue = "1")Integer pageNum,
                @RequestParam(value = "pageSize", defaultValue = "10")Integer pageSize) {
            PageParam pp = new PageParam();
            pp.setPageNum(pageNum);
            pp.setPageSize(pageSize);
            PageInfo<SysUser> pageInfo =  userService.findAllByPage(pp);
            model.addAttribute("pageInfo", pageInfo);
            return "user/list-content";
        }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值