# XML-Verarbeitungsfehler: Kein Element gefunden - Nur bei verwendung eines ServletFilters



## Luke_ (15. Mrz 2011)

Hey Leute,
ich habe mir eine Filterklasse geschrieben, um zu prüfen, ob der User eingeloggt ist. Problem ist momentan, dass ich einen XML-Fehler bekomme. Dieser tritt nur auf, wenn der Filter ausgeführt wird. Ohne Filter wird die Seite ganz normal angezeigt.

Also erst einmal meine Filterklasse, momentan zum testen natürlich auf eine einfach Ausgabe beschränkt.


```
public class FBAuth implements Filter
{

	public FBAuth()
	{
		
	}
	
	@Override
	public void destroy()
	{
		// TODO Auto-generated method stub

	}

	@Override
	public void doFilter(ServletRequest sr, ServletResponse sr1, FilterChain fc)
			throws IOException, ServletException
	{
		System.out.println("Filter");
	}

	
	@Override
	public void init(FilterConfig arg0) throws ServletException
	{
	

	}

}
```

Dann die testfilter.xhtml:


```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"> 

<h:head></h:head> 
<body> 
<f:view>
	<h:outputText value="Filtertest" />
</f:view>
</body> 
</html>
```

Der Eintrag in der web.xml:


```
<!-- first define a named filter -->
	<filter>
	   <filter-name>FbAu</filter-name>
	   <filter-class>package.FBAuth</filter-class>
	</filter>
	
	<!-- now map this filter to a URL-pattern -->
	<filter-mapping>
	   <filter-name>FbAu</filter-name>
	   <url-pattern>/faces/pages/*</url-pattern>
	</filter-mapping>
```

Und die Fehlermeldung:


```
XML-Verarbeitungsfehler: Kein Element gefunden
Adresse: [url]http://localhost:8080/ProjectOne/faces/pages/overview.xhtml[/url]
Zeile Nr. 1, Spalte 1:
^
```
Nochmal zur Verdeutlichung, der Filter wird ausgeführt, auch eine Weiterleitung hat funktioniert, allerdings nicht die einfach Ausgabe der angeforderten Resource. Übrigens wird im Firefox der Fehler und im Chrome einfach nichts angezeigt.

Ich hoffe, mir kann jemand helfen, denn auch nach stundenlangem googlen bin ich nicht auf eine Lösung gestoßen.

Vielen dank schonmal 

Gruß Luke


----------



## DanZ (16. Mrz 2011)

ich vermute es liegt am fehlenden fc.doFilter...


----------



## Noctarius (16. Mrz 2011)

Dein Filter muss den nächsten Knoten in der FilterChain aufrufen. Der Request wird durch eine Kette von Klassen geschoben und der letzte "Filter" ist dann das Servlet.

JSP-Tutorial - Servlet-Filter

Der Beispielcode ruft chain.doFilter(...) auf


----------



## Luke_ (16. Mrz 2011)

Tatsache, doFilter() hat gefehlt -.-

Hatte die Funktion vorher mal drin gehabt, weil der Filter aber nicht richtig funktioniert hat, hatte ich sie rausgenommen....

Vielen Dank für die Hilfe!


----------

