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 :

Facelet templating + refresh selectif + a4j:include problème


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Par défaut Facelet templating + refresh selectif + a4j:include problème
    Bonjour tous le monde,
    Aujourd'hui j'ai un soucis de rafraichissement de ma page.
    En effet j'avais naïvement pensé que facelet et le templating me permettrais de rafraichir uniquement la partie changeante du code... et finalement, ce n'est pas le cas, quand je clique sur une action toute la page se rafraichit.

    J'ai donc regarder ce que RichFaces pouvait faire pour moi.
    et j'ai constaté qu'il existe un tag include dans a4j.

    Trop cool! je vais mettre ca en œuvre et ca devrait marcher... "ou pas"

    Donc j'utilise: facelets + jsf + richfaces 3.3.2SR1.

    En fait j'ai un managed bean assez bête qui ressemble à ça:

    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
    57
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package com.proximeo.restaurant.jsf;
     
    /**
     *
     * @author Christophe
     */
    public class MenuController {
     
        private static final String CREATE_EVENT_TYPE = "/pages/events/type/create.xhtml";
        private static final String UPDATE_EVENT_TYPE = "/pages/events/type/update.xhtml";
        private static final String DELETE_EVENT_TYPE = "/pages/events/type/delete.xhtml";
        private String selectedPage = "/pages/startPage.xhtml";
     
        /**
         * @return the selectedPage
         */
        public String getSelectedPage() {
            return selectedPage;
        }
     
        /**
         * @param aSelectedPage the selectedPage to set
         */
        public void setSelectedPage(String selectedPage) {
            this.selectedPage = selectedPage;
        }
     
     
        /**
         * @return the createEventType
         */
        public void createEventTypePage() {
            setSelectedPage(CREATE_EVENT_TYPE);
        }
     
        /**
         * @return the updateEventType
         */
        public void updateEventTypePage() {
            setSelectedPage(UPDATE_EVENT_TYPE);
        }
     
        /**
         * @return the deleteEventType
         */
        public void deleteEventTypePage() {
            setSelectedPage(DELETE_EVENT_TYPE);
        }
     
     
     
    }
    Quand je clique sur le panelMenuItem "Création d'un type d'événement" dans le menu qui ressemble à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    <rich:panelMenuGroup label="Type d'événement">
      <rich:panelMenuItem label="Création d'un type d'événement" action="#{menuController.createEventTypePage}"/>
      <rich:panelMenuItem label="Mise à jour d'un type d'événement" action="#{menuController.updateEventTypePage}"/>
      <rich:panelMenuItem label="Suppression d'un type d'événement" action="#{menuController.deleteEventTypePage}"/>
    </rich:panelMenuGroup>
     
    (...)
    J'aimerais qu'un peu plus bas, dans le même fichier le contenu de ma page s'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    (...)
    <a4j:include id="contentPage" viewId="#{menuController.selectedPage}" />
    Quand je fais cela j'ai une jolie erreur :

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    Caused by: javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml
            at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:83)
            at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:190)
            at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
            at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109)
            at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
            at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
            at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
            at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
            at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140)
            at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:116)
            at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
            at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
            at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140)
            at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:81)
            ... 173 more
    Caused by: javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml
            at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:83)
            at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:190)
            at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
            at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109)
            at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
            at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
            at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
            at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
            at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140)
            at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:116)
            at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
            at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
            at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140)
            at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:81)
            ... 192 more
    Caused by: javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml
            at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:83)
            at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:190)
            at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
            at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109)
            at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
            at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
            at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
            at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
            at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140)
            at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:116)
            at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
            at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
            at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140)
            at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:81)
            ... 211 more
    Caused by: javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml
            at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:83)
            at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:190)
            at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
            at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109)
            at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
            at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
            at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
            at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
            at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140)
            at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:116)
            at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
            at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
            at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140)
            at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:81)
            ... 230 more
    Caused by: javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml
            at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:83)
            at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:190)
            at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
            at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109)
            at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
            at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
            at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
            at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
            at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
            at com.s
    qui se traduit par ce message dans le navigateur:
    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
     
     
    type Rapport d'exception
     
    Message
     
    DescriptionLe serveur a rencontré une erreur interne () qui l'a empêché de remplir cette requête.
     
    Exception
     
    javax.servlet.ServletException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml
     
    (...)
     
    Cause racine
     
    javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml
     
    Cause racine
     
    javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml
     
    Cause racine
     
    javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml
     
    Cause racine
     
    javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml
     
    Cause racine
     
    com.sun.facelets.tag.TagAttributeException: /templates/administration.xhtml @96,147 action="#{menuController.createEventTypePage}" Could not Resolve Variable [Overflow]: menuController
     
    Cause racine
     
    javax.el.ELException: Could not Resolve Variable [Overflow]: menuController
     
    Cause racine
     
    java.lang.StackOverflowError
    je me suis dit bon je vais mettre directement l'emplacement de page pour faire test, like that:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a4j:include id="contentPage" viewId="/pages/events/type/create.xhtml" />
    et j'ai toujours l'erreur. J'ai donc un peu chercher sur internet et il s'avère que plusieurs personnes ont déjà eu la même erreur mais sans réponse:
    http://community.jboss.org/message/12598

    Bref! quelqu'un connait il le problème que je rencontre, ou quelqu'un à t'il une solution pour que je puisse rafraichir qu'une seule partie de ma page et pas la totalité (merci de ne pas me proposer la solution des frames )

  2. #2
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Par défaut
    Citation Envoyé par chriscoolletoubibe Voir le message
    Bref!


    tout cela et tu dis bref
    je plaisante, le a4j avec le render fera ton affaire

  3. #3
    Membre confirmé
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Par défaut
    Salut anisj1m!
    Oui je sais mon post est "un peu long" mais j'aime bien donner toutes les précisions dans le premier message, c'est beaucoup plus efficace
    tu peux m'en dire un peu plus sur ta solution?

  4. #4
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Par défaut
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a4j:commandLink action="" reRender="id de la composant a mettre a jour" .../>
    <rich:panel id="id de la composant a mettre a jour"/>

  5. #5
    Membre confirmé
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Par défaut
    Merci je vais essayer cela et si ca fonctionne (mais je n'ai que très peu de doute à ce sujet après avoir lu la documentation) je mettrais un petit "résolu" sur le sujet.

    Merci a toi!
    ++

  6. #6
    Membre confirmé
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Par défaut Ca rafraichit d'accord, mais comment inclure la page?
    Tout est dans le titre en fait j'ai regarder trop vite la doc... Le soucis c'est que je ne peu pas inclure un fichier source dans ce rich:panel ...

    En bref : rafraichir une partie de la page ok, mais comment y inclure de manière dynamique la page xhtml?

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

Discussions similaires

  1. Problème sur l'affichage d'un a4j:include
    Par spaw3003 dans le forum JSF
    Réponses: 1
    Dernier message: 12/09/2012, 17h48
  2. [RichFaces] Problème a4j:include
    Par JoeBurtonn dans le forum JSF
    Réponses: 4
    Dernier message: 27/06/2008, 14h23
  3. ajax4jsf: problème avec <a4j:include>
    Par heureuxLesOublieux dans le forum JSF
    Réponses: 3
    Dernier message: 18/06/2007, 10h30
  4. [MySQL] menu select dans une page include problème de paramètres
    Par starr dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 07/07/2006, 08h42
  5. [JSP] Include, problème de chemin relatif
    Par dafly dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 15/04/2004, 14h11

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