1. 在controller类上加入 @Validated注解
2. 在参数前加入@Valid
@RestController("user")
@Validated
public class UserController {
@PostMapping("register")
public ResultBean register(@Valid @RequestBody RegisterBody registerBody) {
return null;
}
}
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@NoArgsConstructor
@Data
@ApiModel("注册用户")
public class RegisterBody {
@NotNull
@Size(min = 8, max = 11)
@ApiModelProperty("手机号")
private String mobileNo;
@NotNull
private String code;
private String imei;
private String staff_name;
private String company_code;
private String service_provider_code;
}
3. 加入全局消息处理
import com.emcs.utils.ResultBean;
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.RestControllerAdvice;
import java.util.List;
import java.util.stream.Collectors;
@RestControllerAdvice
public class GlobalExceptionHandler {
private ObjectError e;
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResultBean<?> validationErrorHandler(MethodArgumentNotValidException ex) {
// 处理校验异常
List<String> errorInformation = ex.getBindingResult().getAllErrors()
.stream()
.map(e -> {
if (e instanceof FieldError) {
FieldError fieldError = (FieldError) e;
return fieldError.getField() + e.getDefaultMessage();
}
return e.getDefaultMessage();
})
.collect(Collectors.toList());
//ResultBean为一个封装,可以直接返回String
return new ResultBean<>( errorInformation.toString());
}
}
4.效果:
{
"status": 400,
"message": "[mobileNo个数必须在8和11之间, code不能为null]",
"result": ""
}