Логика в том, что фильтр получает удар, условие не выполняется, поэтому он проходит через цепочку фильтров. После подтверждения ответа фильтр срабатывает, и условие теперь выполняется (атрибут запроса был установлен). Он входит, чтобы выполнить пересылку, но страница никогда не переходит. Я знаю, что это как-то связано с фиксацией ответа, потому что я тестировал другую логику, в которой он пересылается, прежде чем он попадает в цепочку в первый раз, и он успешно пересылает.
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest)request;
if (some condition equals true) {
httpServletRequest.getRequestDispatcher("/home.jsp").forward(request, response);
return;
} else {
chain.doFilter(request, response);
}
}
Пример из моего дескриптора развертывания:
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.filters.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>