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

Servlets/JSP Java Discussion :

[JSF] Inclusion de JSPF


Sujet :

Servlets/JSP Java

  1. #1
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut [JSF] Inclusion de JSPF
    Bonjour !

    Je développe en JSF une page JSP dans laquelle j'aimerais inclure un header.jspf, un footer.jspf, ainsi qu'un menu.jspf.

    Le header et le footer devraient pouvoir être inclus dans chaque page JSP que je vais développer. Par conséquent, j'ai écrit ceci dans mon web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        <!-- Configuration des pages JSP -->
        <jsp-config>
            <jsp-property-group>
                <url-pattern>*.jsp</url-pattern>
                <include-prelude>/WEB-INF/jspf/header.jspf</include-prelude>
                <include-coda>/WEB-INF/jspf/footer.jspf</include-coda>
            </jsp-property-group>
        </jsp-config>
        <!-- Fin configuration JSP -->
    Quant à mon menu, il ne doit pas être inclus partout, donc je choisis de l'inclure grâce à la directive suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ include file="/WEB-INF/jspf/menu.jspf" %>
    Voici un échantillon de mon menu.jspf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <%@ page contentType="text/html" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="mh" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="mc" %>
     
    <mc:view>
        <mh:form>
            <h2>Accueil</h2>
            <mh:commandLink action="toInfo" value="Informations"/><br>
            <br>
            ...
        </mh:form>
    </mc:view>
    Cette inclusion, ne contenant que des liens statiques, marche de façon impeccable.

    En revanche, mon header, contenant des EL JSF, ne s'inclut pas comme il faudrait :

    Si je respecte le principe du menu, j'obtiens une erreur lors du lancement de l'appli ainsi déployée. Voici alors le code de mon header.jspf :
    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
    <%@ page contentType="text/html" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="hh" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="hc" %>
     
    <hc:view>
    <div style="-rave-layout: grid" xmlns:i="http://java.sun.com/jsf/html">
        <img style="position absolute; border: 0px solid ; width: 1024px; height: 105px;" alt="Banniere"
             src="./resources/Banniere.jpg" align="middle" hspace="0" vspace="0">
        <hh:commandLink action="#{utilisateur.deconnect}" id="linkDeco" immediate="true"
                        style="position: absolute; right: 30px; top: 74px">
            <hh:outputText value="Se déconnecter"/>
        </hh:commandLink>
        <hh:outputText value="Bienvenue #{utilisateur.userPseudo} !"
                       style="position: absolute; right: 30px; top: 54px"/>
    </div>
    </hc:view>
    Si je procède comme indiqué ci-dessous, je ne visualise sur ma page que le code HTML, et pas le code JSP (autrement dit, seule la bannière apparaît) :
    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"?>
     
    <div style="-rave-layout: grid" xmlns:i="http://java.sun.com/jsf/html">
        <img style="position absolute; border: 0px solid ; width: 1024px; height: 105px;" alt="Banniere"
             src="./resources/Banniere.jpg" align="middle" hspace="0" vspace="0">
        <i:commandLink action="#{utilisateur.deconnect}" id="linkDeco" immediate="true"
                        style="position: absolute; right: 30px; top: 74px">
            <i:outputText value="Se déconnecter"/>
        </i:commandLink>
        <i:outputText value="Bienvenue #{utilisateur.userPseudo} !"
                       style="position: absolute; right: 30px; top: 54px"/>
    </div>

    Alors comment déclarer mon fichier JSPF :

    Merci d'avance
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  2. #2
    Membre régulier
    Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 89
    Points : 111
    Points
    111
    Par défaut
    Juste quelque remarques:

    tu ne peut avoir qu'une "view" par page, utilise donc des subviews

    Le <c:import url="/WEB-INF/jspf/menu.jspf""> est mieux que (moins statique) <%@ include file="/WEB-INF/jspf/menu.jspf" %>

    bizarre de mettre tes pages dans /WEB-INF/, c'est pas leurs places!

    Je pense que ce que tu essaye de faire n'est pas possible avec JSF, pour des raisons de filtres (dans ton web.xml tu a dut faire un "servlet mapping"), mais peut être un autre pourrait confirmer

  3. #3
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Effectivement, après de nouvelles recherches, j'ai changé ma structure pour adopter des <c:import> plutôt que des <%include>. De même, j'utilise désormais les subviews.

    Mais j'ai un problème de taille qui est certainement lié à ce que tu dis : seul l'HTML est interprété dans mes fragments importés... Le code source à l'exécution n'a pas changé par rapport à ce que j'ai écrit, il s'agit toujours du JSF, donc forcément rien n'est affiché.

    Peut-on approfondir le problème du web.xml ? Il contient effectivement le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        <servlet-mapping>
            <servlet-name>FacesServlet</servlet-name>
            <url-pattern>/faces/*</url-pattern>
        </servlet-mapping>
    En quoi cela est-il gênant ?

    PS : Les JSPF sont sockés dans le répertoire WEB-INF/jspf, comme conseillé sur l'une des sources sur lesquelles je me suis basé... Mais dans un soucis de mapping des servlets, j'ai tout placé avec les autres pages JSP.
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  4. #4
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Bon j'ai un nouvel élément : tout marche à merveille lorsque mes fichiers JSPF sont renommés avec une extension *.jsp à la place de *.jspf...

    Ou se situe donc la configuration des fichiers disant que le JSF doit être interprété dans les JSP, pour que je puisse également rajouter l'interprétation des JSPF ?
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  5. #5
    Membre régulier
    Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 89
    Points : 111
    Points
    111
    Par défaut
    essaye ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <!-- files that will be searched for when requesting a .jsf one (instead of .jsp) -->
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.jspf</param-value>
    </context-param>

  6. #6
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Ca n'est pas bon... Je commence à me rendre fou. Pourquoi est-ce que je galère autant pour une simple inclusion ???
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  7. #7
    Membre régulier
    Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 89
    Points : 111
    Points
    111
    Par défaut
    et c'est pas finit

    Quand tu rendra compte que ca pourrait marcher mais que tu doit redifinir le layout a chaque fois, tu devra passer sur Tiles ou Facelets

    Et la d'autre problèmes ...

    Bonne chance

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 59
    Points : 57
    Points
    57
    Par défaut
    De ce que j'ai pu en lire et comprendre, les inclusions de jspf sont statiques et ne sont pas compilés. Bref à moins de trouver un moyen de changer le comportement des inclusions en général, le seul moyen de régler le problème est en effet de renommer l'extension jspf par jsp.

    PS: Je sais que ce post date mais dans le cas ou ca aiderait quelqu'un...

Discussions similaires

  1. Inclusions de JSF
    Par isibonheur dans le forum JSF
    Réponses: 2
    Dernier message: 17/08/2012, 16h56
  2. [JSTL] [JSF] Problème d'inclusion de la taglib core
    Par Gnarik dans le forum Taglibs
    Réponses: 14
    Dernier message: 10/12/2010, 15h47
  3. Jsf 2.0 ajax inclusion de fichiers
    Par tralloc dans le forum JSF
    Réponses: 21
    Dernier message: 22/10/2009, 14h03
  4. Réponses: 1
    Dernier message: 02/06/2009, 18h16
  5. JSF - inclusion et héritage
    Par gondek dans le forum JSF
    Réponses: 1
    Dernier message: 06/08/2008, 11h18

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