Я пытаюсь использовать Bean Validation с Джерси 2.0. Когда отправленный ввод недействителен, я получаю странное исключение:
SEVERE: Servlet.service() for servlet [API] in context with path [/API] threw exception [org.glassfish.jersey.server.internal.process.MappableException: java.lang.NoClassDefFoundError: org/glassfish/jersey/message/MessageUtils] with root cause
java.lang.ClassNotFoundException: org.glassfish.jersey.message.MessageUtils
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at org.glassfish.jersey.server.validation.internal.ValidationErrorMessageBodyWriter.writeTo(ValidationErrorMessageBodyWriter.java:162)
(...)
Мой ресурсный метод выглядит так:
@PUT
public Response createSchedule(@BeanParam @Valid Schedule schedule) {
(...)
В классе bean я использую только одно ограничение аннотации
@NotEmpty
protected String name;
...и ResourceConfig
:
public class Application extends ResourceConfig {
public Application() {
super();
packages( "com.test.api.resource" );
register(MustacheMvcFeature.class);
register(ResponseBodyWriter.class);
property(ServerProperties.BV_SEND_ERROR_IN_RESPONSE, true);
property(ServerProperties.BV_DISABLE_VALIDATE_ON_EXECUTABLE_OVERRIDE_CHECK, true);
}
}
Я хотел бы отобразить сообщение об ошибке в формате JSON.