Перенаправить ошибку http 500 на 400 - PullRequest
0 голосов
/ 18 июля 2011

Когда мой сервер получает неполный xml, он возвращает 500 Internal Server Error назад из-за обработки по умолчанию для java.lang.IllegalArgumentException. Я могу переопределить возвращаемую html-страницу, но мне также нужно переопределить код ошибки и сделать его 400, чтобы следовать нашей задокументированной спецификации. Есть ли способ переопределить код ошибки в JSF-2.0? Мы используем JAXB для обработки xml.

Ответы [ 2 ]

1 голос
/ 02 сентября 2011

В итоге я использовал ExceptionMapper следующим образом:

@Provider
public class ClassCastExceptionMapper implements ExceptionMapper<java.lang.ClassCastException> {

    @Override
    public Response toResponse(java.lang.ClassCastException arg0) {
        return Response.status(Response.Status.BAD_REQUEST).build();
    }
}
0 голосов
/ 19 июля 2011

Зависит от того, куда оно было брошено и заключено ли оно в другое исключение. Трудно дать идеально подходящий ответ на основе предоставленной информации.

Однако, чтобы передать ошибку ответа с нужным статусом с помощью JSF2, используйте ExternalContext#responseSendError(). Э.Г.

try {
    // ... ???
} catch (IllegalArgumentException e) {
    externalContext.responseSendError(400, e.getMessage());
    e.printStackTrace(); // Or use logger.
}

Или эквивалентно в фильтре сервлетов , используйте HttpServletResponse#sendError()

try {
    // ... ???
} catch (IllegalArgumentException e) {
    response.sendError(400, e.getMessage());
    e.printStackTrace(); // Or use logger.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...