我正在使用Spring Boot开发一个API,其中有一个对象,该对象具有另一个对象,该对象具有需要验证的字段。这些是以下内容:
CodigoDTO
public final class CodigoDTO {
private String codigo;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String accion;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private UserDTO user;
}
UserDTO
public final class UserDTO {
@ValidIdDocument(message = ERROR_DNI_NIE_FORMAT, checkNie = true, checkNif = true)
private String username;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
private String email;
@Telefono
private String tlf;
private List<CategoriaVideosExplicativos> videosExplicativosVistos;
}
Validator界面
@Target({ ElementType.FIELD, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = { TelefonoValidator.class })
@Documented
public @interface Telefono {
String message() default ERROR_EMAIL_OR_TLF;
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
我不包含验证器接口,因为它不相关。
因此,我要向服务中发送一个CodigoDTO
对象,该对象具有一个UserDTO
,并且其tlf
字段必须具有特定的模式。但是验证器没有被触发。
请注意,我知道我可以将注释放在UserDTO
的{{1}}字段中,但这并不意味着这是正确的方法。
我该如何实现?谢谢!
答案 0 :(得分:3)
如果要验证嵌套对象,则必须使用@Valid
注释来注释字段:
public final class CodigoDTO {
private String codigo;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String accion;
@Valid
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private UserDTO user;
}
答案 1 :(得分:0)
转到使用该对象并使用@Valid注释该对象的服务。这应该可以完成工作。
public String myService( @RequestBody @Valid myObject) {
//something
}