【问题标题】:@Valid is validating in rest api in spring boot@Valid 在 Spring Boot 中的 rest api 中进行验证
【发布时间】:2018-06-23 14:21:24
【问题描述】:

我正在尝试使用 spring 注释验证 rest api 的请求体。该项目是使用 Spring Boot 创建的。 我用@NotNull 和@Valid 用@RequestBody 注释了这个类。在尝试了我所有的方法之后,它没有验证。 谁能帮我解决这个问题?

@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

【问题讨论】:

  • 向我们展示您的请求正文。

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


【解决方案1】:

您可以使用org.springframework.validation.Errors 而不是BindingResult。 然后,如果出现任何错误,您可以返回带有错误正文的ResponseEntity.badRequest()

【讨论】:

    猜你喜欢
    • 2020-10-04
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 2016-01-08
    • 2022-01-17
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    相关资源
    最近更新 更多