2017-04-04 74 views
0

在JSF中,是否有无法检查过滤器是否被注册为应用程序?我有一些功能需要过滤器存在,我想产生更好的错误消息来解释过滤器不存在,功能将被禁用。基本上,给出了理论过滤器:检查servlet过滤器是否已注册

<filter> 
    <filter-name>SomeFilter</filter-name> 
    <filter-class>com.example.SomeFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>SomeFilter</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
</filter-mapping> 

我想检查.isRegistered("com.example.SomeFilter")的一些方法。

我曾考虑打印出堆栈跟踪并检查过滤器类是否存在,但这似乎是一个拙劣的解决方案。

回答

2

您可以从ServletContext访问FilterRegistration

ServletContext ctx = (ServletContext)FacesContext.getCurrentInstance() 
     .getExternalContext().getContext(); 

if(ctx.getFilterRegistration("SomeFilter") != null){ 
    ... 
} 
+0

感谢,正是我一直在寻找(除了我通过去了'HttpServletRequest','httpServletRequest.getServletContext()。getFilterRegistrations()' –

相关问题