ExceptionMapper не работает в гризли
Извините за мой плохой английский. Я использую гризли и джерси для создания веб-приложения.
И я реализую так
ErrorModel errorModel = new ErrorModel("1", "1", "1");
WebApplicationException applicationException = (WebApplicationException) exception;
return Response.status(applicationException.getResponse().getStatus()).type(MediaType.APPLICATION_JSON_TYPE).entity(errorModel).build();
Когда я посетил страницу, которой не существует. Я обнаружил, что это вызывает исключение WebApplicationException. Итак, я отладил и обнаружил, что этот метод вызывается и возвращает ответ выше. Но, наконец, ответ http - это html-страница, созданная Grizzly. Что я должен делать
1 ответ
Решение
Убедитесь, что у вас установлено свойство RESPONSE_SET_STATUS_OVER_SEND_ERROR.
У меня была та же проблема с гризли, и он захватывал мой 400 и отправлял обратно страницу ошибки универсального сервлета по умолчанию. Это было решением для Джерси 2.
public class RestApplication extends ResourceConfig {
private static final Logger logger = Logger.getLogger(RestApplication.class.getName());
public RestApplication() {
// Set this property so that the 400 will still send the entity correctly.
property(ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR, "true");
registerModules();
}