自定义一个Controller import com.example.demo.pojo.User;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
/**
* @Author: luoye
* @Date: 2018-10-12
*/
@RestController
public class ValiController {
@PostMapping(value = "/",produces = "application/json;charset=UTF-8")
public User vali(@RequestBody @Valid User user){
return user;
}
}
自定义实体类 import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @Author: luoye
* @Date: 2018-10-12
*/
public class User {
@NotBlank(message = "这个姓名不能为空")
private String name;
@NotNull(message = "这个年龄不能为空")
@Max(value = 105,message = "太大了")
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
自定义全局异常处理器 import com.example.demo.pojo.ErrorMsg;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.ArrayList;
import java.util.List;
/**
* @Author luoye
* @Date: 2018/10/12 16:50
*/
@ControllerAdvice
public class ExceptionHandlerContrller {
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseBody
public List exception(MethodArgumentNotValidException e) {
BindingResult bindingResult = e.getBindingResult();
List allErrors = bindingResult.getAllErrors();
List errorMsgs = new ArrayList<>();
allErrors.forEach(objectError -> {
ErrorMsg errorMsg = new ErrorMsg();
FieldError fieldError = (FieldError)objectError;
errorMsg.setField(fieldError.getField());
errorMsg.setObjectName(fieldError.getObjectName());
errorMsg.setMessage(fieldError.getDefaultMessage());
errorMsgs.add(errorMsg);
});
return errorMsgs;
}
}
PostMan测试下 [
{
"field": "name",
"message": "这个姓名不能为空",
"objectName": "user"
},
{
"field": "age",
"message": "这个年龄不能为空",
"objectName": "user"
}
]