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 :

Ouvrir un modelPanel à partir de MenuItem + passage de paramètre


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut Ouvrir un modelPanel à partir de MenuItem + passage de paramètre
    salut pour tous,

    J'ai un problème que j'ai pas trouvé une solution adéquate.
    Je veux ouvrier une modelPanel à partir d'un MenuItem.
    pour bien présenter le sujet voila ce que je traite :

    j'ai une liste, le dernier colonne pour les actions , edit, show ...
    les actions se présente dans un menu.

    le code :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <rich:dropDownMenu id="actionButton" direction="top-left"
    value="#{i18n.btn_actions}" styleClass="btnAction" jointPoint="tl">
     
    <rich:menuItem value="Modifé valeaur"
      id="editMenuItem"
    icon="#{a4jSkin.nameSkin}/images/edit16.png"
    action="#{monBean.getSelectedObject}" >
    <f:setPropertyActionListener value="#{item}"
    	target="#{monBean.currentObject}" />
     
    <rich:componentControl for="editPanel"
    attachTo="editObjectMenuItem" operation="show" event="onclick"  />
    </rich:menuItem>
    puis dans le model panel j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:inputText value="#{monBean.currentObject.id}" />
    Avec ce code la solution qui marche jusqu'à maintenant c'est avec un action dans le bean je récupère l'id avec <f:param> du colonne sélectionnée puis je récupére l'objet dans l'action et pour afficher le model panel j'utilise l'attribut
    showWhenRendered="#{monBean.flag}"
    du model panel, qui est égale à true à l'exécution de l'action.

    mais cette solution n'est pas professionnel, car l'action su MenuItem doit etre exécuter pour afficher le Modelpanel donc il y a relaod (Actualisation ) de la page web.
    c'est pas le cas, car le model panel doit etre affichier dés le clic sur le menuItem.

    1) J'ai utilisé avec oncomplete="javascript:Richfaces.showModalPanel('editPanel');"
    et <f:setpropertyaction > le probleme c'est que les valeurs à editer ne s'affiche pas dans le model panel, car il faut qu'une action qui va etre executer pour passer les valeur avec <f:setpropertyaction >

    2) Avec componentControle ne marche pas aussi, le probleme d'affichage du modelpanel il faut mettre l'attribut submitMode="none" pour afficher le model panel, donc aucune balise de passage de parametre ne marche, aussi aucun action.

    Comment j'utilise <a4j:keepAlive beanName="nom_de_ton_bean" />

    Est ce que avec cette balise j'en sort du problème.
    --------------------------------------------------------------------
    Si je garde la première solution c'est à dire utilisation de :

    showWhenRendered="#{monBean.flag}"
    du model panel qui est met le falg = true dans l'action de récupération de l'objet courant du menuItem.

    Bon, à travers cette méthode , comment je peut rendre ce falg à false après la fermeture de modelPanel, car il devient true après l'action de menuItem pour qui'il s'affiche.
    Mais le model panel s'affiche apès chaque action.(flag = True)

    Comment je le passe à false après la fermeture du model panel ?

    Merci d'avance.

  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
    Par défaut
    Citation Envoyé par logarsalem Voir le message
    Avec ce code la solution qui marche jusqu'à maintenant c'est avec un action dans le bean je récupère l'id avec <f:param> du colonne sélectionnée puis je récupére l'objet dans l'action et pour afficher le model panel j'utilise l'attribut
    showWhenRendered="#{monBean.flag}"
    du model panel, qui est égale à true à l'exécution de l'action.

    mais cette solution n'est pas professionnel, car l'action su MenuItem doit etre exécuter pour afficher le Modelpanel donc il y a relaod (Actualisation ) de la page web.
    c'est pas le cas, car le model panel doit etre affichier dés le clic sur le menuItem.

    1) J'ai utilisé avec oncomplete="javascript:Richfaces.showModalPanel('editPanel');"
    et <f:setpropertyaction > le probleme c'est que les valeurs à editer ne s'affiche pas dans le model panel, car il faut qu'une action qui va etre executer pour passer les valeur avec <f:setpropertyaction >

    Peux tu expliquer plus en détails, tu parle de quelle colonne, c'est dans une dataTable...?? il est où le code..?


    Citation Envoyé par logarsalem Voir le message


    Comment j'utilise <a4j:keepAlive beanName="nom_de_ton_bean" />

    Est ce que avec cette balise j'en sort du problème.
    L'intérêt de keepAlive est de garder un bean qui est dans un scope request valide pendant des requêtes ajax, si ton bean est en session ça n'a aucune utilité.

    Citation Envoyé par logarsalem Voir le message
    --------------------------------------------------------------------
    Si je garde la première solution c'est à dire utilisation de :

    showWhenRendered="#{monBean.flag}"
    du model panel qui est met le falg = true dans l'action de récupération de l'objet courant du menuItem.

    Bon, à travers cette méthode , comment je peut rendre ce falg à false après la fermeture de modelPanel, car il devient true après l'action de menuItem pour qui'il s'affiche.
    Mais le model panel s'affiche apès chaque action.(flag = True)

    Comment je le passe à false après la fermeture du model panel ?

    Merci d'avance.
    C'est possible de changer la valeur lors de la fermeture, avec a4j:support et/ou a4j:actionparam, et/ou l'attribut actionListener du composant de commande qui ferme la modalPanel.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut
    Merci Sniper37 pour votre rèponse,

    j'explique plus en détaille :

    les action se fond dans le dernier colonne du data table voila le code :


    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
     
    <rich:dataTable binding="#{monBean.dataTable}"
    	id="maListDataTable" width="100%" rowClasses="even-row,odd-row"
    	onRowMouseOver="jQuery(this).addClass('active-row')"
    	onRowMouseOut="jQuery(this).removeClass('active-row')">
     
    <!--  colonnes à afficher -->
    <!--  Le dernier colone -->
     
    <rich:column id="column6" style="text-align:left">
    <rich:dropDownMenu id="actionButton" direction="top-left"
    						value="#{i18n.btn_actions}" styleClass="btnAction" jointPoint="tl">
     
    <rich:menuItem value="#{i18n.listGammes_Actions_modifier_Gamme}"
    id="listGammes_btn_edit"
    icon="#{a4jSkin.nameSkin}/images/edit16.png" submitMode="Ajax"
    							oncomplete="javascript:Richfaces.showModalPanel('editPanel');">
     
    <f:param name="idGamme" value="#{item.id}" />
     
    </rich:menuItem>
    dans le model Panel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:inputText value="#{monBean.currentObject.id}" />
    c'est ça le code j'ai essayé tous comme j'ai dit mais pas de solution sauf la dernier.

    Est ce qu'il y a autre solution d'ouverture de mon modelpanel d'edit ?

    Merci;
    ----------------------------------------------------------------
    j'ai pas un composant pour la fermeture du model panel je le ferme par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <f:facet name="controls">
    <h:panelGroup>
    <h:graphicImage value="#{a4jSkin.nameSkin}/images/croix.png"
    style="cursor:pointer" id="hidelink2" />
    <rich:componentControl for="editPanel" attachTo="hidelink2"
    		operation="hide" event="onclick" />
    </h:panelGroup>
    </f:facet>
    µEst ce que vous pouvez expliquer de plus comment j'utilise a4j:support et/ou a4j:actionparam, je ne les connais pas.

    Merci d'avance.

  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
    Par défaut
    le problème ce n'est ps l'ouverture ou la fermeture du madalPanel, si je comprend bien ..
    le problème c'est de récupérer la ligne courante de la dataTable, tu peux ajouter au menu une actionListener et regarde la réponse d'un problème similaire.

    pour a4j:support et a4j:actionparam, ils sont pas mal important dans Richfaces, il faut lire la doc..le code doit ressembler à ça..mais, je ne pense pas que c'est utile dans ton cas.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <h:graphicImage value="#{a4jSkin.nameSkin}/images/croix.png"
    style="cursor:pointer" id="hidelink2" >
    <a4j:support event="onclick">
    <a4j:actionparam name="flag" value="#{!bean.flag}" assignTo="#{bean.flag}"/>
    </a4j:support> 
    </h:graphicImage>

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut
    je vous remercie Sniper37, c'est bien ça, le problème c'est le passage des paramètre de la ligne sélectionné au modelPanel.

    je vais essayé,

    Mais j'ai des questions :

    ActionEvent c'est de java.awt.event ou bien de javax.facet.event ,

    je met quoi dans le xhtml ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <rich:menuItem value="#{i18n.listGammes_Actions_modifier_Gamme}"
    id="listGammes_btn_edit"
    icon="#{a4jSkin.nameSkin}/images/edit16.png" submitMode="Ajax"
    							oncomplete="javascript:Richfaces.showModalPanel('editPanel');"
    
    actionListener="#{monBean.getSelectedRow}">
    et dans la classe bean :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void getSelectedRow(ActionEvent e) {
     
    GammesBean bean = (GammesBean) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("item");
     
    //comment je récupére l'objet on question ? 		 
     
     currentGamme = bean.get....	
    }
    Merci

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut
    Citation Envoyé par Sniper37 Voir le message


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <h:graphicImage value="#{a4jSkin.nameSkin}/images/croix.png"
    style="cursor:pointer" id="hidelink2" >
    <a4j:support event="onclick">
    <a4j:actionparam name="flag" value="#{!bean.flag}" assignTo="#{bean.flag}"/>
    </a4j:support> 
    </h:graphicImage>
    j'ai mis ça mais à chaque action après la fermeture le modelpanel s'ouvre donc l'attribut flag est toujours initialisé à true.

    Est ce qu'il y a une autre solution ?

  7. #7
    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
    Par défaut
    Enlève le showWhenRendered.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/03/2006, 17h46
  2. [ezPDF] Ouvrir un pdf à partir d'une page php
    Par aude_1603 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 28/02/2006, 12h06
  3. Ouvrir un répertoire à partir d'un formulaire
    Par delphineleclerc1 dans le forum Access
    Réponses: 3
    Dernier message: 21/12/2005, 17h44
  4. Ouvrir un dossier à partir de son chemin
    Par Mr.Gus dans le forum Access
    Réponses: 2
    Dernier message: 13/06/2005, 13h59
  5. ouvrir un CDocument à partir d'un CDialog
    Par loupdeau dans le forum MFC
    Réponses: 4
    Dernier message: 17/05/2005, 14h38

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