2017-04-04 11 views
0

In JSF, gibt es trotzdem zu überprüfen, ob ein Filter für eine Anwendung registriert ist? Ich habe einige Funktionen, für die ein Filter erforderlich ist, und ich möchte bessere Fehlermeldungen erzeugen, um zu erklären, dass der Filter nicht existiert und die Funktionalität deaktiviert wird. Im Grunde genommen ein theoretisches Filter gegeben:Überprüfen, ob ein Servlet-Filter registriert ist

<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> 

ich irgendwie .isRegistered("com.example.SomeFilter") zu überprüfen möchte.

Ich hatte erwogen, den Stack-Trace auszudrucken und zu prüfen, ob die Filterklasse dort existiert, aber das scheint eine hacky Lösung zu sein.

Antwort

2

Sie können von der ServletContext auf die FilterRegistration zugreifen.

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

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

Danke, genau das, was ich gesucht hatte (außer ich über eine 'HttpServletRequest' ging,' httpServletRequest.getServletContext(). GetFilterRegistrations() ' –

Verwandte Themen