Пользовательское сообщение для ConstraintValidator - PullRequest
0 голосов
/ 18 декабря 2018

Я использую реализацию ConstraintValidator, как указано ниже, для проверки объекта запроса для службы REST с пружинной загрузкой.

@Target({ FIELD, METHOD, PARAMETER, ANNOTATION_TYPE })
@Retention(RUNTIME)
@Constraint(validatedBy = MyRequestValidator.class)
@Documented
public @interface MyRequestValidation {

    String message() default "Mandatory fields missing";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}

public class MyRequestValidator
            implements
                ConstraintValidator<MyRequestValidation, MyRequest>{
   @Override
    public void initialize(MyRequestValidation constraintAnnotation) {
        // Nothing to do here
    }
   @Override
    public boolean isValid(MyRequest myRequest, ConstraintValidatorContext context) {
 //do some validation
     context.disableDefaultConstraintViolation();    
     context.buildConstraintViolationWithTemplate("Id can contain only alphabets and digits")
    .addPropertyNode("id")
    .addConstraintViolation();
   }
}

//REST end point
public interface RestApi{
  @Produces(MediaType.XML)
  @Consumes(MediaType.XML)
  @POST
  MyResponse action(@MyRequestValidation MyRequest myRequest);
}

@Component
public class RestApiImpl implements RestApi {
..
}

Это выводит как

[PARAMETER]
[myRequest.arg0.id]
[Id can contain only alphabets and digits]

Есть ли способ произвести JSON илиXML-сообщение (или на основе аннотации @Produces в конечной точке REST).Я использую Hibernate реализации этих интерфейсов ConstraintValidatorContext

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...