# error-page mit ui:composite funktioniert nicht



## lieschen89 (31. Jan 2014)

Hi,

ich versuche über den error-page-Tag in der web.xml Fehler auf eigene Fehlerseiten umzuleiten. Leider hatte das nicht funktioniert. Hier mal ein Ausschnitt aus meiner web.xml:

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<web-app 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
			xmlns="http://java.sun.com/xml/ns/j2ee" 
			xmlns:javaee="http://java.sun.com/xml/ns/javaee" 
			xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
			xsi:schemaLocation="http://java.sun.com/xml/ns/jee http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd" 
			id="WebApp_ID" version="3.0">
  <display-name>JSF</display-name>
  <description>JSF Description</description>

  <filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
  </filter-mapping>

<filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>hibernateFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

  <listener>
    <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
  </listener>
  <listener>
    <listener-class>
            org.springframework.web.context.request.RequestContextListener
        </listener-class>
  </listener>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>Home.xhtml</welcome-file>
  </welcome-file-list>

  <error-page>
      <exception-type>java.lang.Exception</exception-type>
      <location>/Fehler.xhtml</location>
  </error-page> 

</web-app>
[/XML]

und hier meine Fehler.xhtml:


```
<?xml version="1.0" encoding="UTF-8"?>
<!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:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
    <title>Fehler</title>
</h:head>
<h:body>
	<ui:composition template="/templates/template.xhtml">
		<ui:define name="content">
<h:form>
  Ups! Es ist ein Fehler passiert. <br/>
  Probieren Sie es später erneut.
</h:form>
		</ui:define>
	</ui:composition>
</h:body>
</html>
```

Ich habe eine Nullpointer ausgelöst, allerdings wurde nie die Fehlerseite Fehler.xhtml angezeigt sondern immer nur der übliche Stacktrace.
Jetzt habe ich mal die Fehler.xhtml vereinfacht und das Template-Zeugs rausgenommen:


```
<?xml version="1.0" encoding="UTF-8"?>
<!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:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
    <title>Fehler</title>
</h:head>
<h:body>
<h:form>
  Ups! Es ist ein Fehler passiert. <br/>
  Probieren Sie es später erneut.
</h:form>
</h:body>
</html>
```

und dann gings auf einmal.

Der Punkt ist jetzt aber, dass ich ja ne weiße Seite mit Text angezeigt bekomme. Ich möchte die Fehlerseite ja aber 'innerhalb' meiner Webanwendung, also mit Header, Menü, etc. angezegeigt bekommen. Also warum klappt das da nicht mit dem ui:composite?

Kann mir vll jemand helfen?


----------

