@Valid在spring boot中的rest api中进行验证

时间:2018-01-14 22:22:43

标签: spring rest validation spring-mvc spring-boot

我尝试使用spring注释验证rest api的请求体。该项目是使用Spring Boot创建的。 我用@NotNull注释了这个类,用@RequestBody注释了@Valid。在尝试了所有方法后,它没有验证。 有人可以帮我这个吗?

@RestController
public class EmployeeController {

@Autowired
private EmployeeServiceImpl employeeServiceImpl;

@Autowired
private ValidateErrors validateErrors;

@RequestMapping(value = "/register" , method = RequestMethod.POST)
public ResponseEntity<Void> resisterEmployee( @Valid @RequestBody EmployeesVO employees , BindingResult errors) throws EmployeeValidationException  {
    try {           
            validateErrors.checkError(errors);
            //return new ResponseEntity<Void>(message, HttpStatus.BAD_REQUEST); 
    }
    catch(EmployeeValidationException validationException) {
        throw new EmployeeValidationException("2001", "Invalid Input");
    }
    }
public class EmployeesVO {

@NotNull
@JsonProperty("team_members")
List<TeamMember> employeeList ;
//getters & setters
 }

public class TeamMember extends Employees{
@NotNull
private Integer team_member_id;
//getters and setters
}

调试时我可以看到hasErrors()会返回false(无错误)。 请注意,员工类还有2个字段,注释为@NotNull

1 个答案:

答案 0 :(得分:0)

您可以使用org.springframework.validation.Errors代替BindingResult。 然后,如果存在任何错误,您可以返回带有错误正文的ResponseEntity.badRequest()