Весна - проверить поле поля - PullRequest
0 голосов
/ 09 ноября 2018

Я разрабатываю API с загрузкой Spring, в котором у меня есть объект, у которого есть другой объект, у которого есть поле, которое мне нужно проверить. Это следующие:

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;
}

Интерфейс валидатора

@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 в CodigoDTO, но это не значит, что это правильный способ сделать это.

Как я мог этого достичь? Спасибо!

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

перейти к службе, которая потребляет объект, и аннотировать объект с помощью @Valid. это должно сделать работу.

public String myService( @RequestBody @Valid myObject) {
 //something  
}
0 голосов
/ 09 ноября 2018

Если вы хотите проверить вложенный объект, вы должны аннотировать поле с помощью @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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...