首页   快速返回

springboot2 mvc 数据绑定总结     所属分类 spring
key-value   json 

web参数名 和 方法参数名 不一致 使用 @RequestParam
注意 基本类型 和 包装类型的区别 
int vs Integer 
推荐使用 包装类型 ,避免空指针
数组参数  可自动绑定到 String[], 绑定 到 List< String> 需要使用 @RequestParam
绑定到数据对象 , 需要 set 方法 
@Valid 注解开启校验
public Map< String,Object> getUserAndValid(@Valid User user,BindingResult bindingResult)
@RequestBody 使用 json格式 ,请求体为 json 格式 
public User getUserFromJson(@RequestBody User user)



    @RequestMapping("/getInteger1")
	public Integer getInteger1(@RequestParam(required=false) Integer id) {
		return id;
	}
	
	@RequestMapping("/getInteger2")
	public Integer getInteger2(@RequestParam("id_") Integer id) {
		return id;
	}
	
	@RequestMapping("/getInteger3")
	public Integer getInteger3(@RequestParam(name="id_",defaultValue = "999") Integer id) {
		return id;
	}
	
    @RequestMapping("/getNameArray")
	public String[] getNameArray(String[]name){
		return name;
	}
	
	@RequestMapping("/getNameList")
	public List< String > getNameList(@RequestParam("name") List< String > name){
		// ?name=cat&name=dog
		// 不传参数 报错  
		// org.springframework.web.bind.MissingServletRequestParameterException: Required List parameter 'name' is not present
		return name;
	}
	
list 需要使用 @RequestParam


	@RequestMapping("/getUser")
	public User getUser(User user){
		// ?id=1&name=cat&dept.id=2&dept.name=dept1
		// set 方法必须
		return user;
	}
	
	
数据对象绑定  需要 set 方法 !!!


	@RequestMapping("/getUserAndValid")
	public Map< String,Object> getUserAndValid(@Valid User user,BindingResult bindingResult){
		Map< String,Object> map = new HashMap< String,Object>();
		map.put("user", user);
		
		if(bindingResult!=null && bindingResult.hasErrors()){
			map.put("errors", bindingResult.getAllErrors());
		}	
		// dept 校验没生效 !!!
		return map;
	}
	
	
@Valid 增加校验

public  class User{
		
		@NotNull(message = "id为空")
		@Min(value = 0, message = "ID 小于 0")
	    @Max(value = 1000, message = "id 大于 1000")
		private Long id;
		
		@NotBlank(message = "name为空")
		@Size(min=1,max=10,message="name 长度错误 ")
		private String name;
		


	@RequestMapping("/getUserFromJson")
	public User getUserFromJson(@RequestBody User user){
		// post 
		// 请求头设置 Content-Type application/json
		// 请求体设置  raw 格式
		// {"id":1,"name":"cat","dept":{"id":2,"name":"dept1"}}
		return user;
	}
	

 springboot2 @RequestBody注解使用说明 

完整代码
https://gitee.com/dyyx/springboothello/blob/master/src/main/java/demo/controller/DataBindController.java

上一篇     下一篇
詹姆斯写给伦纳德的一封信

伦纳德给詹姆斯的回信

大数据治理要点

运维知识体系

架构知识体系

CFA和CPA