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 例子:
@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 + "}"; } }
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"); } }); }
后台接受方法
@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"; }