2017-04-04 77 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()' –

相關問題