doFilter wird zwei mal aufgerufen

Status
Nicht offen für weitere Antworten.

freez

Top Contributor
Hallo,

ich habe eine Anwendung, in der ich einen Filter implementiert habe. Wenn ich auf einen commandLink klicke, dann wird die Methode
Code:
public void doFilter(ServletRequest requ, ServletResponse resp, 
         FilterChain chain) throws IOException, ServletException {

zwei mal aufgerufen. Die erste ServletRequest.getRequestURL() ist dann die Seite, von der ich komme, und die zweite ist die, welche ich erreichen will.

Die commandLinks sind so implementiert:
Code:
<h:commandLink action="to_celllist" styleClass="searchText">
						<h:outputText value="Zellen" styleClass="searchText"/>
					</h:commandLink>


in der faces-config.xml sind die navigation_rules auf die festen Texte hinterlegt, welche im action Attribut hinterlegt sind.

Die Navigation funktioniert hervorragend, nur die Methode doFilter wird 2 mal aufgerufen. Warum?
 

HLX

Top Contributor
Bist du sicher, dass die Methode 2x aufgerufen wird, oder befindest du dich lediglich 2x im gleichen Filter?

Letzteres wäre o.k. da Filter ineinander geschachtelt werden. Auch das Servlet wird "geschachtelt"

Nach dem letzen Filter wird im Filter mittels "chain.doFilter(request, response)" das Servlet aufgerufen. Deine eigene "doFilter"-Methode kann davor und danach Anweisungen enthalten. Die Anweisungen davor werden vor- die anderen nach Abarbeitung des Servlets ausgeführt.

Sollte allerdings die Filtermethode tatsächlich 2x aufgerufen werden, wären Informationen über Filterkonfiguration und Inhalt deiner "doFilter"-Methode hilfreich.
 

freez

Top Contributor
Meine web.xml sieht so aus:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <context-param>
    <param-name>javax.faces.CONFIG_FILES</param-name>
    <param-value>/WEB-INF/faces-config.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
    <filter-name>MyFacesExtensionsFilter</filter-name>
    <filter-class>org.apache.myfaces.component.html.util.ExtensionsFilter</filter-class>
    <init-param>
      <param-name>maxFileSize</param-name>
      <param-value>20m</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>MyFacesExtensionsFilter</filter-name>
    <url-pattern>*.jsf</url-pattern>
  </filter-mapping>
  
  <resource-ref>
        <description>
            Ressource-Reference zu einer Factory, die java.sql.Connection Instanzen erzeugen kann. Diese können (müssen) in der server.xml eingerichtet werden.
        </description>
        <res-ref-name>
            jdbc/cells
        </res-ref-name>
        <res-type>
            javax.sql.DataSource
        </res-type>
        <res-auth>
            Container
        </res-auth>
    </resource-ref>
  <welcome-file-list>
  <welcome-file>index.jsf</welcome-file>
  <welcome-file>default.jsf</welcome-file>
</welcome-file-list>

<filter> 
<filter-name>navigationFilter</filter-name> 
<filter-class>com.test.navigationFilter</filter-class> 
</filter> 

<filter-mapping> 
<filter-name>navigationFilter</filter-name> 
<url-pattern>*.jsf</url-pattern> 
</filter-mapping> 

</web-app>

und meine filtermethode ist diese da: www.java-forum.org/de/topic55647_jsf-outputlink-zur-ck.html
 

Ralf Ueberfuhr

Bekanntes Mitglied
Und wenn du nun willst, dass dein Filter nicht bei internen Forwards aktiv wird, dann ändere das im Filter-Mapping, wie in diesem Beispiel:

Code:
	<filter-mapping>
		<filter-name>ResponseOverrideFilter</filter-name>
		<url-pattern>*.do</url-pattern>
		<dispatcher>REQUEST</dispatcher>
	</filter-mapping>

Du kannst mehrere <dispatcher>-Objekte einfügen, möglich sind noch INCLUDE, FORWARD und ERROR für alle möglichen Ereignisse, eine Ressource aufzurufen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M doGet()-Methode wird nicht geladen Allgemeines EE 3
B Datenbank Resource wird nicht gefunden Allgemeines EE 1
OnDemand JSF Stacktrace wird nicht korrekt ausgegeben Allgemeines EE 1
J Mit @Schedule annotierte Methode wird nach einer Weile nicht mehr ausgeführt (JBoss AS 7.2) Allgemeines EE 0
S Drools - Stop sobald erste Regel getroffen wird Allgemeines EE 2
S a4j:ajax Event wird 2 Mal gefeuert. Allgemeines EE 0
J JBoss, Eclipse, Webseite wird nicht angezeigt? Allgemeines EE 4
Y JSF EJB wird nicht injected Allgemeines EE 18
A Wie kann ich verhinder, dass die seite angezeigt wird? Allgemeines EE 3
P Prozess wird nicht beendet Allgemeines EE 4
C JSP wird nur halb geladen Allgemeines EE 2
G jsp:getProperty wird mehrfach aufgerufen - Warum? Allgemeines EE 3
A action-Methode wird nicht aufgerufen Allgemeines EE 7
M taglib wird nicht gefunden Allgemeines EE 9
N JSF + Facelets: Datatable wird nicht angezeigt Allgemeines EE 1
G EJB - EJB wird nicht ins Servlet geladen Allgemeines EE 3
M Action wird 2 mal durchlaufen Allgemeines EE 3
P JSF Seite wird nicht gestartet Allgemeines EE 4
B FileInputStream(sPath); file wird nicht gefunden Allgemeines EE 5
F MyFaces und Tiles: <tiles:insert> wird nicht erkannt Allgemeines EE 10
A HttpUnit: Form wird nicht submitted Allgemeines EE 4
G welcher Appserver wird verwendet Allgemeines EE 4
S package wird nicht gefunden Allgemeines EE 2
H Servlet: init() wird 2x ausgeführt Allgemeines EE 8
E Tomcat/Servlet Problem - Servlet wird nicht gefunden Allgemeines EE 8
G properties file im J2EE Server - wo wird genau gesucht? Allgemeines EE 6
F Servlet: DoPost wird zweimal aufgerufen Allgemeines EE 3
M Servlet: CSS der JSP wird bei einem forward nicht gefunden? Allgemeines EE 2
S ResSet wird "vernichtet" Allgemeines EE 5
D HTML-Code von JSP wird in Browser nicht angezeigt?! Allgemeines EE 3
S JSP Zwischen zwei Formularen Daten austauschen Allgemeines EE 0
R RMI Zugriff zwischen zwei WAR Projekten Allgemeines EE 1
S JEE5: Verwendung von zwei Interfaces Allgemeines EE 4
N Objekte zwischen zwei Application Contexts austauschen Allgemeines EE 19
B Warum zwei Sessioncookies? Allgemeines EE 7
M Zwei Buttons in einem Servlet Allgemeines EE 2
S Struts: zwei JSP's nutzen eine Action Allgemeines EE 5
M Kommunikation zwischen zwei Servlets Allgemeines EE 5
L Zwei Browserfenster mit unterschiedlicher session - geht das Allgemeines EE 3
S Zwei Werte mit XPath vergleichen <x:if>. Allgemeines EE 2
T Zwei Buttons in derselben FORM rufen unterschied. Servlets a Allgemeines EE 10

Ähnliche Java Themen

Neue Themen


Oben