Почему Catalina RequestFacade читает параметры, но не сохраняет значения с помощью пользовательского фильтра? - PullRequest
0 голосов
/ 13 июня 2019

Я пытался настроить H2 db для своего приложения, и при попытке получить доступ к консоли я получал Не найден подходящий драйвер для ошибки 08001/0 при тестировании соединения.

This answer указал, что это связано с пользовательским фильтром , который я использовал .Немного поигравшись, я обнаружил, что, прикрепив вызов к Requet.getParameter ("foo"), любое значение сработало, в конструкторе оболочки это решило проблему.Это также сработало, если я вызвал метод перед переносом начального запроса в мой новый класс.Однако он не работал, когда я пытался вызвать тот же метод после того, как начальный запрос был упакован.

Работает:

public class GlobalWrapFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        request.getParameter("test");
        MultiReadRequestWrapper wrapper = new MultiReadRequestWrapper((HttpServletRequest) request);
        chain.doFilter(wrapper, response);
    }

    @Override
    public void destroy() {}

}

Не работает:

public class GlobalWrapFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        MultiReadRequestWrapper wrapper = new MultiReadRequestWrapper((HttpServletRequest) request);
        //neither work
        wrapper.getRequest().getParameter("test");
        request.getParameter("test");
        chain.doFilter(wrapper, response);
    }

    @Override
    public void destroy() {}

}

При просмотре подключенного источника кажется, что вызовы должны делегироваться завернутому запросу, который должен быть ссылкой, то есть он будет вести себя так же, как вызов перед переносом.Пошагово продвигаясь вперед, казалось, что это как-то связано с параметром защищенного поля, установленным в значение true, но не сохраняющим проанализированные значения.Мне было интересно, знает ли кто-нибудь, почему мой новый упаковщик вызывал поломку и почему вызов одного из методов, связанных с параметрами, перед переносом приводил к тому, что все снова заработало, но вызов after не помог.

...