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 :

[Richfaces] Et vous comment gérez vous les modal panels ?


Sujet :

JSF Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 76
    Points : 96
    Points
    96
    Par défaut [Richfaces] Et vous comment gérez vous les modal panels ?
    Bonjour,

    Je gere mes modal panels de cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <a4j:outputPanel id="modalControl">
        <f:subview>
            <c:if test="#{showModal}">
                <rich:modalPanel id="modal">
                     ....
                </rich:modalPanel>
                <script type="text/javascript">
                    javascript:Richfaces.showModalPanel('modal')
                </script>
            </c:if>
        </f:subview>
    </a4j:outputPanel>

    Le c:if est pour moi obligatoire car dans le cas contraire, JSF evalue le contenu de la balise modal, et si celle ci contient des beans non initialisés c'est le drame...

    L'inconvénient c'est que cela nécessite pour afficher ou cacher la modal un aller retour serveur pour reRender le contenu de modalControl.


    Qu'en pensez vous ?

    Et vous comment les gérez vous ?

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    et pourquoi ne pas faire:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <rich:modalPanel id="modal" rendered="#{showModal}">
    tu veux dire quoi par un bean non initialiser?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 76
    Points : 96
    Points
    96
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    et pourquoi ne pas faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <rich:modalPanel id="modal" rendered="#{showModal}">
    tu veux dire quoi par un bean non initialiser?
    Si par exemple je fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <a4j:outputPanel id="modalControl">
        <f:subview>
                <rich:modalPanel id="modal" rendered="#{showModal}>
                     <h:outputText value="#{modalBean.contenuMetier}"/>
                </rich:modalPanel>
                <script type="text/javascript">
                    javascript:Richfaces.showModalPanel('modal')
                </script>
        </f:subview>
    </a4j:outputPanel>
    La premiere fois rendered=false, mais JSF va quand même évaluer le contenu des sous nœuds de modalPanel (si je ne m'abuse).

    Quand il va tomber sur <h:outputText value="#{modalBean.contenuMetier}"/> il va rencontrer un modalBean qui n'est pas initialisé correctement.

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    le seul problème que tu peux avoir, c'est un nullPointerException pour un objet à l'intérieur du bean, il suffit de le mettre non null.

    Sinon tu peux ajouter le rendered au composant parent.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 76
    Points : 96
    Points
    96
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    le seul problème que tu peux avoir, c'est un nullPointerException pour un objet à l'intérieur du bean, il suffit de le mettre non null.

    Sinon tu peux ajouter le rendered au composant parent.
    Conceptuellement ca me gene de devoir tout initialiser pour que JSF ne m'envoi pas d'erreur sur une modal qui n'est pas affichée.

    JSF n'évaluera pas les enfants des enfants avec un rendered sur le parent ?

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    non il ne sera pas évalué.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 76
    Points : 96
    Points
    96
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    non il ne sera pas évalué.
    J'ai oublié de préciser que j'utilise les facelets dedans avec un ui:include dont la source dépend d'un bean non initialisé

  8. #8
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    tu peux adapter le principe à ton cas, je ne sais pas comment tu initialise ton bean..
    juste que je ne vois pas l'intérêt d'utiliser un c:if pour ça..
    et le problème n'a rien à voir avec les modalPanel, n'importe quel composant qui prend une valeur de ton bean peut te causer le même problème, tu risque de te retrouver avec des c:if partout ..
    pas très simple à gérer maintenir.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 76
    Points : 96
    Points
    96
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    tu peux adapter le principe à ton cas, je ne sais pas comment tu initialise ton bean..
    juste que je ne vois pas l'intérêt d'utiliser un c:if pour ça..
    et le problème n'a rien à voir avec les modalPanel, n'importe quel composant qui prend une valeur de ton bean peut te causer le même problème, tu risque de te retrouver avec des c:if partout ..
    pas très simple à gérer maintenir.
    Les c:if sont juste la pour mon ui:include. Sans le c:if avec un bean non initialisé, ca lance une exception.

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/06/2009, 12h12
  2. Réponses: 3
    Dernier message: 27/08/2008, 13h32
  3. Réponses: 8
    Dernier message: 11/10/2006, 01h57
  4. Comment gérez-vous la validation d’un panier ?
    Par sam01 dans le forum E-Commerce
    Réponses: 10
    Dernier message: 07/04/2006, 15h31
  5. Comment gérez-vous les NULL dans 1 insert ?
    Par qi130 dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/02/2005, 22h01

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