Wie kann ein web-filter in JSF 2?
Ich einen solchen filter erstellt :
public class LoginFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
if (session.getAttribute("authenticated") != null || req.getRequestURI().endsWith("login.xhtml")) {
chain.doFilter(request, response);
} else {
HttpServletResponse res = (HttpServletResponse) response;
res.sendRedirect("login.xhtml");
return;
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}
Dies ist meine Struktur:
Und dann füge ich den filter in der web.xml:
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
Der filter funktioniert wie es sollte, aber gibt mir immer diese Fehlermeldung:
"Was not possible find or provider the resource, login"
Und nach, dass meine richfaces, funktioniert das nicht mehr.
Wie kann ich das lösen ? Oder erstellen Sie eine web-filter-richtig ?
Das ist eine seltsame Fehlermeldung. Hast du es übersetzen aus einer anderen Sprache? Ist es nur ein HTTP-404-Fehler?
Ich mache BalusC, ich komme aus Brasilien, also der Fehler scheint mir in Portugiesisch, wissen Sie, wie ändere ich die Eclipse auf Englisch ? Also ich könnte den ursprünglichen Fehler.
Eclipse-Standard-Sprache hängt von der Plattform Standard-Gebietsschema. Also, wenn Ihr OS ist auf Portugiesisch, dann Eclipse Erben diese Einstellung. Aber Sie können dies überschreiben, indem Sie angeben
Ich mache BalusC, ich komme aus Brasilien, also der Fehler scheint mir in Portugiesisch, wissen Sie, wie ändere ich die Eclipse auf Englisch ? Also ich könnte den ursprünglichen Fehler.
Eclipse-Standard-Sprache hängt von der Plattform Standard-Gebietsschema. Also, wenn Ihr OS ist auf Portugiesisch, dann Eclipse Erben diese Einstellung. Aber Sie können dies überschreiben, indem Sie angeben
-nl [languagecode]
argument auf eclipse.exe
. E. g.: eclipse.exe -nl en
wird es auf Englisch.
InformationsquelleAutor Valter Silva | 2011-11-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alle Pfad-relative URL (z.B. URLs, die nicht mit
/
), die Sie passieren zusendRedirect()
relativ zu der aktuellen Anfrage-URI. Ich verstehe, dass die login-Seite ist in http://localhost:8080/contextname/login.xhtml. Also, wenn Sie zum Beispiel Zugang http://localhost:8080/contextname/pages/user/some.xhtml, dann diese Umleitung wird der Anruf auch tatsächlich zu http://localhost:8080/contextname/pages/user/login.xhtml, die ich denke, existiert nicht. Achten Sie auf die URL in der Adresszeile Ihres Browsers wieder.Um dieses problem zu beheben, eher redirect auf eine domain-relative-URL statt, D. H. es beginnen die URL mit
/
.Du bist herzlich willkommen.
InformationsquelleAutor BalusC