Пользовательское сообщение для ConstraintValidator

Я использую реализацию 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

Вы имеете в виду, вы хотите вернуть ответ json / xml в случае сбоя проверки?

Shiva 18.12.2018 16:04

Да, конечная точка @secretsuperstar My Rest помечена как создающая XML. Ответ и ошибки бизнес-проверки (инкапсулированные внутри объектов с аннотированными полями XmlElement) преобразуются в XML, за исключением этих проверок ограничений java.

Sajin Surendran 25.12.2018 15:43
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
10
2
4 211
0

Другие вопросы по теме