IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

JSF - TILES - TOMCAT - cohabitation


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut JSF - TILES - TOMCAT - cohabitation
    bonjours,

    j'ai un petit soucis de cohabtation entre ces troois système, et là franchement je vois plus quoi faire...

    mon but : déféinir un template (layout) de base, et étendre chacune de mes page des ce template en changeant 1 et un seul parametre représentant le contenu !

    pour ce faire voici les quelques fichiers utilisé :

    web.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
    49
    50
    51
    52
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app 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-app_2_5.xsd"
       version="2.5"> 
     
      <display-name>appl</display-name>
      <description>appl</description>
     
      <!-- Faces Config -->
      <context-param>
        <param-name>javax.faces.CONFIG_FILES</param-name>
        <param-value>
          /WEB-INF/faces-config.xml
        </param-value>
      </context-param>
     
      <!-- Faces Servlet -->
      <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
     
      <!-- Faces Servlet Mapping -->
      <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
      </servlet-mapping>
     
      <!-- Tiles Servlet -->
      <servlet>
        <servlet-name>tiles</servlet-name>
        <servlet-class>
          org.apache.struts.tiles.TilesServlet
        </servlet-class>
        <init-param>
          <param-name>definitions-config</param-name>
          <param-value>/WEB-INF/tiles-defs.xml</param-value>
        </init-param>
        <init-param>
          <param-name>definitions-parser-validate</param-name>
          <param-value>true</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
        <message-resources parameter="messages.MessageBundle" />
      </servlet>
     
      <welcome-file-list>
        <welcome-file>index.jsf</welcome-file>
      </welcome-file-list>
      </web-app>
    ce dernier fait référence à mon face-config.xml (pour le coup il est vide !!!), et mon tiles-def.xml qui définie mes tiles :
    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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
     
    <!DOCTYPE tiles-definitions PUBLIC
           "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
           "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
     
    <tiles-definitions>
     
     
    	<!-- MAIN LAYOUT -->
    	<definition name=".mainLayout" path="../layout/layout.jsp">
    		<put name="title" value="appl" />
    		<put name="cheminDeFer" value="../layout/cheminDeFer.jsp" />
    		<put name="entete" value="entete.jsp" />
    		<put name="corps" value="../layout/contenu.jsp" />
    		<put name="bouton" value="../layout/bouton.jsp" />
    		<put name="erreur" value="../layout/erreur.jsp" />
    	</definition>	
     
    	<!-- ACCUEIL -->
    	<definition name=".acc_acc" extends=".mainLayout">
    		<put name="title" value="appl- Acceuil" />
    	</definition>	
    	<definition name=".acc_auth" extends=".mainLayout">
    		<put name="title" value="appl- Authentifiaction" />
    	</definition>	
    	<definition name=".acc_iden" extends=".mainLayout">
    		<put name="title" value="appl- Identifiaction" />
    	</definition>	
    	<definition name=".acc_port" extends=".mainLayout">
    		<put name="title" value="appl- Portail" />
    		<put name="corps" type="page" value="/sv3_acc/acc_port/acc_port.jsp" />
    	</definition>	
     
    	</tiles-definitions>
    Mon fichier d'entré est celui ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <%@ taglib prefix="t" uri="http://jakarta.apache.org/struts/tags-tiles"%>
     
    <t:insert definition=".acc_port" flush="false" ignore="false" />
    il appel donc le layout suivant :
    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
    <?xml version="1.0" encoding="iso-8859-1"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <%@ taglib prefix="t" uri="http://jakarta.apache.org/struts/tags-tiles"%>
    <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
    <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
     
    <html>
      <head>
        <title><t:getAsString name="title" /></title>
        <link rel="stylesheet" type="text/css" href="../css/stylesheet.css" />
        <link rel="stylesheet" type="text/css" href="css/stylesheet.css" />
      </head>
      <body>
        <f:view>
          <h:form id="sesame">
          	<div id="container">
          	  <f:loadBundle basename="messages.MessageBundle" var="bundle"/>
     
          	  <div id="cheminDeFer">
          	    <f:facet name="facet_CF">
          	      <t:insert attribute="cheminDeFer" flush="false" ignore="false" />
          	    </f:facet>
          	  </div>
     
          	  <div id="entete">
          	    <f:facet name="facet_entete">
          	      <t:insert attribute="entete" flush="false" ignore="false" />
          	    </f:facet>
          	  </div>
     
          	  <div id="corps">
          	    <f:facet name="facet_corps">
          	      <t:insert attribute="corps" flush="false" ignore="false" />
          	    </f:facet>
          	  </div>
     
          	</div>
          </h:form>
        </f:view>
      </body>
    </html>
    et par extension le contenu suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
    <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
     
    <f:subview id="acc_port">
    <div class="cadre">
      <h1><h:outputText value="#{bundle.acc_port_titre}" /></h1>  
    </div>
    </f:subview>
    mon problème est que cette structure fonctinnait parfaitement sous weblogic, mais il semble que sous Tomcat (6.0) les balise <h:Xxx> ne soient pas interpete dans les fichiers de contenu.

    j'obtient le résultat suivant sir le dernier éléments:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div id="entete">
      texte
      <h1></h1>
    </div>
    Alors que je devrais naturellement obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="entete">
      <h1>  texte</h1>
    </div>
    qq'un a une piste ?!?
    please ...

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour.
    Quelle impléméntation de JSF est ce que tu utilises ? parceque si c'est une implémentation de JSF 1.1, to problème vient de la mauvaise cohabitation entre JSF et JSP du aux cycles de vies différents ... Ceci est décrit en détail ici (En Anglais).
    • Tu peux soit essayer le Sun JSF RI 1.2
    • Ou encore (et le ieux à mon avis) laisser tomber tiles et le JSP et passer aux facelets (si c'est possible) : c'est beaucoup plus propre et plus adapté.
    Bonne chance.

    P.S. : Le titre est mal choisi : il ne s'agit pas de Struts ici : c'est Tiles, et pas Struts

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    meri, je vais cherchez dans cette voie...

    sinon comment je peux faire pour savoir quel implémentation est utilisé ?!?

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Une piste serait de regarder la version de la dtd utilisée dans faces-config.xml mais c'est pas sûr.
    Tu peux aussi chercher dans le WEB-INF/lib deux fichiers xxxx-api.jar et xxxx-impl.jar qui contiennent l'implémentation de JSF.

    Sinon, rien ne t'empêche (théoriqment) de télécharger la Sun JSF RI 1.2 (2 jars je crois) et de les mettre dans le WEB-INF/lib et tester mais il faut enlever l'ancienne implémentation.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    275
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 275
    Par défaut
    Bonjour Arcann.

    J'ai eu l'occasion de me retrouver face à ce problème (imbrication des éléments HTML un peu "bizarre".

    Il avait à l'époque été résolu en encapsulant chaque fraction de code HTML dans des balise verbatim

    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
    <?xml version="1.0" encoding="iso-8859-1"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <%@ taglib prefix="t" uri="http://jakarta.apache.org/struts/tags-tiles"%>
    <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
    <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
     
    <f:verbatim>
    <html>
      <head>
        <title>
    </f:verbatim>
          <t:getAsString name="title" />
    <f:verbatim>
        </title>
        <link rel="stylesheet" type="text/css" href="../css/stylesheet.css" />
        <link rel="stylesheet" type="text/css" href="css/stylesheet.css" />
      </head>
      <body>
    </f:verbatim>
        <f:view>
          <h:form id="sesame">
          	<div id="container">
          	  <f:loadBundle basename="messages.MessageBundle" var="bundle"/>
     
    etc.
    Par contre, j'ai du mal à saisir pourquoi ton premier élément jsf n'est pas intégré à ta "view"... Le problème vient peut être tout simplement de ça

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    compte tenu de ma situation et des délais que j'ai j'ai un peu modifier mes objectis et mon architecture....

    je suis donc passé au Struts pur et simpls, plus de soucis de tags qui vont pas ou il faut...

    mais à mon avis je réouvrirais ca sujet plus tard pour d'autres projet !

    Merci à tous !

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    275
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 275
    Par défaut
    Je continues à dire que la tag VERBATIM résoudra ton problème...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/03/2010, 19h05
  2. [JSF][JSP][Facelets]Cohabitation possible ?
    Par pssst dans le forum JSF
    Réponses: 4
    Dernier message: 13/04/2009, 14h41
  3. Authentification JSF + Realm tomcat
    Par LukasP. dans le forum JSF
    Réponses: 5
    Dernier message: 27/03/2009, 08h51
  4. Réponses: 1
    Dernier message: 11/05/2007, 16h24
  5. JSF + Tiles, modifier seulement le body d'une page
    Par LeVickingRoux dans le forum JSF
    Réponses: 1
    Dernier message: 14/02/2007, 13h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo