Bonsoir,
Je souhaite développer un projet en JSF et plus particulièrement avec facelets pour profiter des avantages qu'il offre en terme de templating.
J'ai crée un projet web dynamique (JSF 1.2 et facelet) avec eclipse galileo et le plugin Jboss tools.
J'ai crée un fichier index.jsp, template.xhtml et une page accueil.xhtml.
Au lancement de l'application, index.jsp fait une redirection vers accueil.xhtml.
Les balises JSF de type <h:..> et <f:..> sont bien interprétées mais les balises facelets de type <ui:..> ne le sont pas.
Après plusieurs vérification, je ne pense pas que le problème vienne du web.xml ou du faces-config.xml, malgré pas mal après de recherche, je ne vois pas d'ou vient le problème.
Voici le code de mes différents fichiers :
fichier web.xml
fichier faces-config.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 <?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/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <description>Facelets StarterKit</description> <display-name>projet</display-name> <context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.xhtml</param-value> </context-param> <context-param> <param-name>facelets.REFRESH_PERIOD</param-name> <param-value>2</param-value> </context-param> <context-param> <param-name>facelets.DEVELOPMENT</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>client</param-value> </context-param> <context-param> <param-name>com.sun.faces.validateXml</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>com.sun.faces.verifyObjects</param-name> <param-value>true</param-value> </context-param> <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>*.jsf</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> <login-config> <auth-method>BASIC</auth-method> </login-config> </web-app>
fichier index.jsp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?xml version="1.0" encoding="UTF-8"?> <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xi="http://www.w3.org/2001/XInclude" 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_1_2.xsd"> <application> <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> <locale-config /> </application> <factory /> <lifecycle /> </faces-config>
fichier template.xhtml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<jsp:forward page="/pages/accueil.jsf"/>
et le fichier accueil.xhtml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 <!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/facelet"> <head> <title><ui:insert name="titre" /></title> </head> <body> <f:view> <p><ui:insert name="entete"> <ui:include src="entete.xhtml" /> </ui:insert></p> <div><ui:insert name="menu">Menu1<br />Menu2<br />Menu3<br /> </ui:insert></div> <div id="contenu"><ui:insert name="contenu"> <ui:include src="content.xhtml" /> </ui:insert></div> </f:view> </body> </html>
Les jars de mon projet web sont :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <!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/facelet"> <ui:composition template="../template/template.xhtml"> <ui:define name="titre">Titre Page</ui:define> <ui:define name="menu"> <h:outputText value="Menu1" /> <h:outputText value="Menu2" /> <h:outputText value="Menu3" /> </ui:define> <ui:define name="contenu"> <h:outputText value="Contenu" /> </ui:define> </ui:composition> </html>
common-annotations.jar
commons-beanutils.jar
commons-collections.jar
commons-digester.jar
commons-logging.jar
jsf-api-1.2_02.jar
jsf-facelets.jar
jsf-impl-1.2_10.jar
jsf-tlds.jar
jstl.jar
standard.jar
Je travail avec apache-tomcat-6.0.28.
Le code source de ma page accueil.xhtml affiche bien les balises <ui:..> de facelets, confirmant bien qu'elles n'ont pu être interprétées.
Le résultat pour la page est donc :
En espérant sincèrement une aide de votre part, j'avoue que je bloque un peu là
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Titre Page Menu1Menu2Menu3 Contenu
Je pense que dans mon cas la servlet de JSF est bien appelée mais qu'il y
doit y avoir un problème de configuration pour facelets seulement (car pour les tags JSF, je n'ai pas le problème).
Merci d'avance pour votre aide.
Partager