# RichFaces einbinden



## trudi (27. Feb 2012)

Hi,

ich habe Probleme Richfaces einzubinden.
Allgemein bin ich wie auf jboss.org beschrieben vorgegangen:

https://community.jboss.org/wiki/HowToAddRichFaces4xToProjectsNotBasedOnMaven

ich hab die 4 .jars eingebunden (also in WEB-INF/lib kopiert):

richfaces-components-api-4.2.0.Final.jar
richfaces-components-ui-4.2.0.Final.jar
richfaces-core-api-4.2.0.Final.jar
richfaces-core-impl-4.2.0.Final.jar

Und hab folgendes in meine web.xml eingebaut:
[XML]
	<context-param>
		<param-name>org.richfaces.SKIN</param-name>
		<param-value>blueSky</param-value>
	</context-param>
	<context-param>
		<param-name>org.richfaces.CONTROL_SKINNING</param-name>
		<param-value>enable</param-value>
	</context-param>

	<filter>
		<filter-name>richfaces</filter-name>
		<filter-class>org.ajax4jsf.Filter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>richfaces</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
[/XML]

Einmal bekomme ich schon in der web.xml einen Fehler und zwar beim filter bei 
"<filter-class>org.ajax4jsf.Filter</filter-class>"

Da sagt er mir:


```
Attrubite filter class references to non existing class org.ajax4jsf.Filter
```


Aber schon beim deployen bekomme ich Fehler mit den libs:


```
ERROR Digester:1439: Parse Error at line 2 column 325: Dokument ist ungültig. Keine Grammatik gefunden
org.xml.sax.SAXParseException; systemId: jar: file:/C:apache-tomcat/webapps/MeineAnwendung/WEB-INF/lib/richfaces-components-ui-4.2.0.Final.jar!/META-INF/faces-config.xml; lineNumber2; columnNumber 325; Dokument ist ungültig. Keine Grammatik gefunden
```

also auch für die anderen libs

kann mir vielleicht jemand sagen woran das liegt?


----------



## trudi (27. Feb 2012)

ok, kann sein dass es daran liegt: faces-config.xml:

[XML]
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
                              "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
[/XML]

heißt dass das ich JSF 1.0 benutze? Eigentlich sollte das ja eher JSF 2.0 sein. Oder hat das damit nichts zu tun?

kann mir mal jemand generell so den Anfang von der web.xml und faces-config.xml geben, im Internet findet man da soo viele verschieden.
Generell, wann verwendet man den so ein <!DOCTYPE... bei der faces und web und wann so was hier:
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"....version="2.0">

so weit ich das jetzt mal nach geguckt habe: JSF 2.0 benutzt keine DTD mehr, also kein  <!DOCTYPE... in der faces-config?

Allerdings gibts ein Fehler wenn ich folgendes in meine faces-config einfüge:

[XML]
<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">
[/XML]

Und zwar:

```
Dokument-Root-Element "faces-config" muss mit DOCTYPE-ROOT "null" übereinstimmen.
org.xml.sax.SAXParseException; systemId; jndi/localhost/Anwendung/WEB-INF/faces-config.xml; lineNumber7, columnNumber 19;Dokument-Root-Element "faces-config" muss mit DOCTYPE-ROOT "null" übereinstimmen.
```

Zeile 7 ist oben die letzte Zeile, also versuin="2.0">


----------



## trudi (28. Feb 2012)

ok, hier nochmal der Anfang meiner web.xml und geänderten faces-config.xml:

web.xml
[XML]<?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"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd" version="2.5"> 

...
    <context-param>
        <param-name>org.richfaces.SKIN</param-name>
        <param-value>blueSky</param-value>
    </context-param>
    <context-param>
        <param-name>org.richfaces.CONTROL_SKINNING</param-name>
        <param-value>enable</param-value>
    </context-param>

    <filter>
        <filter-name>richfaces</filter-name>
        <filter-class>org.ajax4jsf.Filter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>richfaces</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

[/XML]


faces-config.xml:
[XML]<?xml version="1.0"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
	version="2.0">[/XML]

Fehlermeldungen:


```
Dokument-Root-Element "faces-config" muss mit DOCTYPE-ROOT "null" übereinstimmen.
org.xml.sax.SAXParseException; systemId; jndi/localhost/Anwendung/WEB-INF/faces-config.xml; lineNumber7, columnNumber 19;Dokument-Root-Element "faces-config" muss mit DOCTYPE-ROOT "null" übereinstimmen.
```

und 


```
ERROR Digester:1439: Parse Error at line 2 column 325: Dokument ist ungültig. Keine Grammatik gefunden
org.xml.sax.SAXParseException; systemId: jar: file:/C:apache-tomcat/webapps/MeineAnwendung/WEB-INF/faces-config.xml; lineNumber2; columnNumber 325; Dokument ist ungültig. Keine Grammatik gefunden
```


Weiß niemand warum?


----------



## jwiesmann (28. Feb 2012)

Hi, also ich weiß nicht was es mit diesen Filtern auf sich hat, aber ich nutze RichFaces und da habe ich lediglich folgende Einträger meiner web.xml hinzugefügt:
[XML]
<!-- damit nicht immer diese Meldung da erscheint .. gab irgendwann mal einen bug .. kA-->
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Production</param-value>
    </context-param>
<!-- wuerde ich immer empfehlen, sonst wird der Code in Kommentaren mitgeparst (was einen wirklich in den Wahnsinn treiben kann)-->
    <context-param>
        <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
        <param-value>true</param-value>
    </context-param>
[/XML]

Deiner FacesContext.xml fehlt auf jeden fall noch
[XML]
</faces-config>
[/XML]
Du brauchst jedoch nicht unbedingt eine! Wenn du die Sprache von den Fehlermeldung unter Richfaces ändern willst z.B.
Meine sieht so aus:
[XML]
<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="2.0"
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
    <application>
        <locale-config>
            <default-locale>en</default-locale>
        </locale-config>
    </application>
</faces-config>
[/XML]

Dir fehlen jedoch noch die externen libs:
cssparser.jar --> CSS Parser | Free software downloads at SourceForge.net
sac.jar --> http://repo1.maven.org/maven2/org/w3c/css/sac/1.3/sac-1.3.jar
guava-r08.jar --> Release08 - guava-libraries - Release notes for Guava Release 08 - Guava: Google Core Libraries for Java 1.5+ - Google Project Hosting

runterladen und auch ins WEB-INF/lib kopieren.

Dann sollte es klappen!


----------



## trudi (28. Feb 2012)

Hi,

also ich glaub der Fehler lag jetzt nicht primär an RichFaces einbinden (also direkt), ich glaub ich hab das Problem, dass ich eben in meiner faces-config vorher version=1.0 stehen hatte und dass das dann nicht klappen kann? also RichFaces baut doch auf JSF 2.0 oder?

Weil wenn ich lediglich in meinem funktionierenden Programm die faces-config und web.xml header ändere(wie oben geschrieben), 

(





> Deiner FacesContext.xml fehlt auf jeden fall noch
> XML Code: Quelltext in neuem Fenster öffnen
> </faces-config>


ja, war nicht die komplette faces, wollte nur den "Header", was ich geändert habe zeigen)

ohne zusätzliche RichFaces Einträge oder Libs bekomm ich due Fehler:


```
Digester:1439 - Parse Error at line 5 column 19: Dokument-Root-Element "faces-config" muss mit DOCTYPE-Root "null" übereinstimmen
org.xml.sax.SAXParseException; systemId: jndi:/localhost/Applikation/WEB-INF/faces-config.xml;lineNumber:5; 
columnNumber19:Dokument-Root-Element "faces-config" muss mit DOCTYPE-Root "null" übereinstimmen
```

und


```
Digester:1439 - Parse Error at line 5 column 19: Dokument ist ungültig. Keine Grammatik gefunden.
org.xml.sax.SAXParseException; systemId: jndi:/localhost/Applikation/WEB-INF/faces-config.xml; lineNumber:5; columnNumber:19; Dokument ist ungültig.
Keine Grammatik gefunden.
```

Der Fehler liegt also, dass ich irgendwie von JSF 1.0 auf JSF 2.0 wechseln will um RichFaces zu nutzen

-----


> Dir fehlen jedoch noch die externen libs:
> cssparser.jar --> CSS Parser | Free software downloads at SourceForge.net
> sac.jar --> http://repo1.maven.org/maven2/org/w3....3/sac-1.3.jar
> guava-r08.jar --> Release08 - guava-libraries - Release notes for Guava Release 08 - Guava: Google Core Libraries for Java 1.5+ - Google Project Hosting



Die hatte ich auch drin, dachte nur die wären irgendwie optional, daher hatte ichs nicht erwähnt


----------

