İsteğinize bir Öznitelik belirleyebilir ve ikinci filtrenizde kontrol edebilirsiniz.
public class FirstFilter implements Filter {
//...
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setAttribute("executeSecondFilter", true);
//...
if(someReason)
servletRequest.setAttribute("executeSecondFilter", false);
filterChain.doFilter(servletRequest, servletResponse);
}
}
public class SecondFilter implements Filter {
//..
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
if (servletRequest.getAttribute("executeSecondFilter") == null || !((Boolean) servletRequest.getAttribute("executeSecondFilter"))) {
filterChain.doFilter(servletRequest, servletResponse);
}
//...
}
}
Böyle Yukarıdaki kodu kolaylaştırabilirsiniz:
public class FirstFilter implements Filter {
//...
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//...
if(someReason)
servletRequest.setAttribute("executeSecondFilter", false);
filterChain.doFilter(servletRequest, servletResponse);
}
}
public class SecondFilter implements Filter {
//..
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
if (servletRequest.getAttribute("executeSecondFilter") != null) {
filterChain.doFilter(servletRequest, servletResponse);
}
//...
}
}
Bu şekilde sadece özelliğin varlığını kontrol "executeSecondFilter"
Colin'in cevap ilaveten
Güzel bir fikir, ancak öznitelik belirlenmemişse bu örnek NPE'yi atar. – BalusC
@BalusC, Bu yüzden bir '! = True' koydum, ancak otomatik olarak kutsanan nesne karşılaştırması kazandı, şimdi düzeltildi :) –
Ayrıca 'Boolean.TRUE' özelliğini de kullanabilirsiniz. Ancak, ben şahsen düz çirkin buluyorum;) – BalusC