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 :

Appel d'une page JSF : quel tag utiliser ?


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Par défaut Appel d'une page JSF : quel tag utiliser ?
    Bonjour,

    Je débute en JSF et j'ai un problème concernant l'appel d'une page JSF depuis une autre page JSF. Je voudrais utiliser le tag "ouputLink" mais cela ne fonctionne pas. Ci-dessous mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <h:outputLink id="modifyUserData" value="ModifyUserSelectPage.jsp">
          <f:param id="userId" name="userId" value="#{user.id}"/>
          <h:outputText value="Modify this user"/>
    </h:outputLink>
    Le tag "outputLink" permet-il bien d'appeler des pages JSF ? Ou faut-il plutôt utiliser le tag "commandLink" ?

    Merci de votre aide

    Niniz

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Citation Envoyé par Niniz
    cela ne fonctionne pas.
    Une erreur quelconque ou il ne se passe rien ?

    En cas de ContextNotFoundException :

    en fonction de URL-PATERN pour la FacesServlet dans faces-config.xml
    Il faut modifier le lien pour correspondre au pattern.

    Ainsi si tu as :
    /faces/* ---> ton lien doit pointer vers /faces/tapage.jsp

    *.jsf ---> tu dois pointer vers /tapage.jsf


    Si ce n'est pas ça donne un peu plus de détail.

    Sinon le command link + navigation rule est une solution qui marche

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Par défaut
    J'ai corrigé le nom de la page vers laquelle le lien doit pointer vu que dans mon URL-PATTERN c'est *.jsf et non pas *.jsp ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <h:outputLink id="modifyUserData" value="ModifyUserSelectPage.jsf">
          <f:param id="userId" name="userId" value="#{user.id}"/>
          <h:outputText value="Modify this user"/>
    </h:outputLink>
    Mais lorsque je clique sur le lien en question la page affichée est vide alors que normalement il devrait y avoir du texte ..

    Est-ce que l'on doit ajouter une règle de navigation dans le faces-context lorsque l'on utilise un outputLink liant deux pages JSF ?

  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
    Non, pas du tout.
    Que contient la page destination (source JSF) ?
    Regardes aussi le code source de la page générée (bouton droit dans le navigateur, afficher ou voir source).

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Par défaut
    La page destination contient ceci :

    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <%@ page contentType="text/html;charset=windows-1250"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <f:view>
      <html>
        <head>
          <meta http-equiv="Content-Type"
                content="text/html; charset=windows-1250"/>
          <title>ModifyUserSelectPage</title>
        </head>
        <body>
           <h:outputText value="TEST"/>
        </body>
      </html>
    </f:view>
    <%-- oracle-jdev-comment:auto-binding-backing-bean-name:ModifyUserSelectBean--%>
    Concernant le code source de la page affichée, celui-ci est totalement vide

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Peut tu nous donner :
    web.xml
    faces-config.xml

    STP

  7. #7
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Par défaut
    Voici le code du 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
    53
    54
    55
    56
     
    <?xml version = '1.0' encoding = 'windows-1250'?>
    <web-app 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_4.xsd" version="2.4" xmlns:f="http://java.sun.com/jsf/core" xmlns="http://java.sun.com/xml/ns/j2ee">
        <description>Empty web.xml file for Web Application</description>
     
    <filter>
    	<filter-name>MyFacesExtensionsFilter</filter-name>
    	<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
        <init-param>
            <param-name>maxFileSize</param-name>
            <param-value>20m</param-value>
        </init-param>
    </filter>
     
     
     
    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>
     
    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
    </filter-mapping>
     
    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <url-pattern>*.jsf</url-pattern>
    </filter-mapping>
        
       <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>*.faces</url-pattern>
       </servlet-mapping>  
     
        <servlet>
          <servlet-name>SourceCodeServlet</servlet-name>
          <servlet-class>org.apache.myfaces.shared_tomahawk.util.servlet.SourceCodeServlet</servlet-class>
        </servlet>
     
        <listener> 
          <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
        </listener>   
            
        <error-page>
          <error-code>404</error-code>
          <location>/ErrorPage.jsp</location>
        </error-page> 
    </web-app>
    Le code du 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
     
    <?xml version="1.0" encoding="windows-1250"?>
    <!DOCTYPE faces-config PUBLIC
      "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
      "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
    <faces-config xmlns="http://java.sun.com/JSF/Configuration">
     
      <managed-bean>
        <managed-bean-name>loginBean</managed-bean-name>
        <managed-bean-class>MUDPackage.MUDData</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
      </managed-bean>  
     
    </faces-config>
    Et le code complet du fichier où se trouve le lien

    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <%@ page contentType="text/html;charset=windows-1250"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
     
    <f:view>
        <html>
     
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
     
            <title>Modify user</title>
     
            <link rel="stylesheet" type="text/css" href="stylesheetLogin.css" media="all">
        </head>
     
        <body>
                   <h:dataTable id="userTable" value="#{loginBean.userList}"
                               var="user" rows="2" rowClasses="dataTableRow1, dataTableRow2"
                               columnClasses="td.label" dir="LTR" border="1">
                        <!--oracle-jdev-comment:Faces.RI.DT.Class.Key:java.util.Vector-->
     
                        <h:column>
                            <f:facet name="header">                  
                                <h:outputText value="Id"/>
                            </f:facet>
                            <h:outputText value="#{user.id}"/>
                        </h:column>                
     
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="Modify user data ?"/>
                            </f:facet>
                            <h:outputLink id="modifyUserData" value="ModifyUserSelectPage.jsf">
                                <f:param id="userId" name="userId" value="#{user.id}"/>
                                <h:outputText value="Modify this user"/>
                            </h:outputLink>
                        </h:column>
     
                    </h:dataTable>
        </body>
        </html>
    </f:view>

  8. #8
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
    </servlet-mapping>
    C'est celui-la ton URL pattern...

    Et à quoi te sert ça (dessous)?


    <filter-mapping>
    <filter-name>MyFacesExtensionsFilter</filter-name>
    <url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
    <filter-name>MyFacesExtensionsFilter</filter-name>
    <url-pattern>*.jsf</url-pattern>
    </filter-mapping>
    pke si jamais tu fais du .jsf ou du /faces/... tu passera par les extensions mais pas par FacesServlet

  9. #9
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Par défaut
    En fait, je reprends un projet qui a déjà été entamé donc je ne peux pas vraiment te répondre à quoi sert le code que tu as cité car je n'ai pas encore tout pigé JSF.

    Je dois utiliser des extensions .faces et non .jsf ?

  10. #10
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    d'après ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
    </servlet-mapping>
    Oui...
    Ce code signifie que toutes les URL qui se finissent par *.faces sont à passer dans la moulinette (FacesServlet) de JSF.

  11. #11
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Par défaut
    Ok j'ai modifié l'extension ça marche nickel

    Merci beaucoup !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/09/2010, 19h43
  2. Réponses: 1
    Dernier message: 29/08/2010, 23h50
  3. Réponses: 3
    Dernier message: 09/02/2010, 09h20
  4. Réponses: 5
    Dernier message: 17/10/2008, 15h12
  5. Réponses: 4
    Dernier message: 10/10/2008, 17h24

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