HttpServletResponseWrapper Код состояния = 0 - PullRequest
0 голосов
/ 04 мая 2011

Я использую HttpServletResponseWrapper для захвата кода состояния в фильтре сервлета. Вроде нормально работает.

Я получаю статус 200, когда все в порядке. Однако, когда сервер приложений не может найти запрошенный элемент, я получаю 0. Но в браузере он отображается как 404.

Может кто-нибудь объяснить это?

РЕДАКТИРОВАТЬ: Это веб-приложение JAX-RS, поэтому я предполагаю, что если сервер приложений не может найти путь, который он возвращает без установки статуса, тогда, когда веб-сервер видит состояние 0, он заменяет его на 404. Это звучит правильно?

1 Ответ

0 голосов
/ 11 октября 2017

Я опоздал, но, вероятно, ответ все еще полезен:

В HttpServletResponseWrapper необходимо реализовать следующие методы:

@Override
    public void setStatus(int status) {

        super.setStatus(status);    
        this.status = status;
    }

    @Override
    public void sendError(int status) throws IOException {

        this.status = status;
        super.sendError(status);
    }

    @Override
    public void sendError(int status, String msg) throws IOException {

        this.status = status;
        super.sendError(status, msg);
    }

    @Override
    public void sendRedirect(String location) throws IOException {

        this.status = 302;
        super.sendRedirect(location);
    }

В случае 404 setStatus не вызывается, но sendError, вам нужно перехватить статус там.

...