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 :

Primefaces : Problème de menu contextuel


Sujet :

JSF Java

  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    février 2015
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : février 2015
    Messages : 354
    Points : 142
    Points
    142
    Par défaut Primefaces : Problème de menu contextuel
    Bonjour,
    Dans une appli web java, j'utilise JSF et le framework Primefaces.
    J'ai défini un menu contextuel dans chaque page du projet.
    Mon problème est que le menu contextuel appelle une méthode, mais plusieurs fois.
    Par exemple, si j'ouvre et ferme 5 pages, la méthode au prochain menu contextuel sera exécutée 5 fois !
    Tous les bean utilisés sont en scope view.
    Merci pour votre aide.

    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <p:contextMenu for="idPage" beforeShow="noteMenuContextuelPosition()">   <-- au clic droit, appel du JS noteMenuContextuelPosition
    ...
    ...
    </p:contextMenu>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            <script type="text/javascript">
     
                function noteMenuContextuelPosition()
                {
                 ... 
                 ...               
                    rcNoteMenuContextuelPosition();   <--- appel de la méthode du bean via remoteCommand
                }
            </script>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p:remoteCommand name="rcNoteMenuContextuelPosition" actionListener="#{noteManagerBean.menuContextuelPosition()}"/>   <--- méthode appelée x fois !

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    novembre 2006
    Messages
    6 980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 6 980
    Points : 8 966
    Points
    8 966
    Billets dans le blog
    1
    Par défaut
    Pas sûr d'avoir compris ton problème mais de ce que je vois, il me semble que ton problème est lié à l'appel systématique de ta "remoteCommand" sur un click-droit.
    Que ce soit fait une fois par page me parait normal donc si tu as 5 pages, il faudrait bien l'appeler 5 fois...
    Comme tu passes déjà par une fonction javascript pour appeler la remoteCommand, il suffit de passer par une variable "window" pour savoir si tu as déjà fait le boulot ou non, un truc comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script>
    var processed = false;
     
    function noteMenuContextuelPosition()
    {
       if (processed) return;
       processed = true;
       ...
    }
    </script>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    février 2015
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : février 2015
    Messages : 354
    Points : 142
    Points
    142
    Par défaut
    Je me suis très mal expliqué.

    1 - J'ouvre et ferme une même page 5 fois

    2 - J'ouvre la même page une 6ème fois

    3 - Clic droit pour déclencher le menu contextuel : --> contextMenu est déclenché 6 fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <p:contextMenu for="idPage" beforeShow="noteMenuContextuelPosition()"> 
    ...
    ...
    </p:contextMenu>

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    novembre 2006
    Messages
    6 980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 6 980
    Points : 8 966
    Points
    8 966
    Billets dans le blog
    1
    Par défaut
    A quoi fait référence "idPage" (en terme de composant) ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    février 2015
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : février 2015
    Messages : 354
    Points : 142
    Points
    142
    Par défaut
    IdPage est un p:outputPanel qui me permet de délimiter la zone utile au menu contextuel.

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    novembre 2006
    Messages
    6 980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 6 980
    Points : 8 966
    Points
    8 966
    Billets dans le blog
    1
    Par défaut
    On est d'accord que tu n'as qu'un seul composant avec comme id "idPage" dans ta page ?
    Tu pourrais montrer tout le code de la page parce que là, c'est difficile de voir
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    février 2015
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : février 2015
    Messages : 354
    Points : 142
    Points
    142
    Par défaut
    Oui il est unique dans la page.
    Chaque page a le même id car le contextMenu est dans un template utilisé dans chacune.

    Voici une page : (d'autres infos après)

    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
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:fn="http://java.sun.com/jsp/jstl/functions"
          xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
          xmlns:p="http://primefaces.org/ui"
          xmlns:pe="http://primefaces.org/ui/extensions">
        <h:head>
            <title>Projet J.O.D</title>
            <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
            <link type="text/css" rel="stylesheet" href="/javax.faces.resource/theme.css.xhtml?ln=primefaces-#{themeManagerBean.themeCourant}"/>
            <link type="text/css" rel="stylesheet" href="CSS_Principal.css" media="screen"/>
            <link type="text/css" rel="stylesheet" href="CSS_Printer.css" media="print"/>
    
            <script type="text/javascript">
                function noteMenuContextuelPosition()
                {
                    var element = document.elementFromPoint(event.clientX, event.clientY);
                    var parent = element.parentNode;
                    rcNoteMenuContextuelPosition([
                        {name: 'menuTop', value: event.clientY},
                        {name: 'menuLeft', value: event.clientX},
                        {name: 'elementPage', value: element.innerHTML},
                        {name: 'elementParent', value: parent.id}
                    ]);
                }
            </script>
            <script type="text/javascript">
                function noteDropPosition(event, ui)
                {
                    rcNotePosition([{name: 'noteTop', value: ui.position.top}, {name: 'noteLeft', value: ui.position.left}]);
                }
            </script>
            <script type="text/javascript">
                function desactiverToucheEntreeRecherche(event)
                {
                    if (event.keyCode === 13) {
                        event.preventDefault();
                        return false;
                    }
                }
            </script>
        </h:head>
        <h:body>
            <f:view> 
                <h:form id="form">
                    <p:outputPanel id="idPage" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%">
                        <p:dialog widgetVar="widgetNotificationBarMenuUtilisateur" class="notificationBar" position="0,0" width="100%" height="36" showEffect="fade" hideEffect="fade" showHeader="false" closable="false" resizable="false">
                            <div class="notificationBarPosition">
                                <p:fragment id="idMenuUtilisateur" class="effetFade">
                                    <p:commandLink ajax="false">
                                        <p:graphicImage value="images/Excel.png" class="notificationBarPicto"/>
                                        <h:outputLabel value="Tableau Excel" class="notificationBarLibelle notificationBarLibelleExcel"/>
                                        <p:dataExporter type="xls" 
                                                        target="idRefPlanCompteM61Export" 
                                                        fileName="AdministrationPlanCompteM61" 
                                                        options="#{utilitaireManagerBean.optionsExcel}"
                                                        preProcessor="#{administrationPlanCompteM61ManagerBean.preProcessXLS}"
                                                        postProcessor="#{utilitaireManagerBean.postProcessXLS}"/>
                                    </p:commandLink>
                                    <p:commandLink update="form:idRefPlanCompteM61Export" 
                                                   oncomplete="PF('widgetPrint').getJQ().click()">
                                        <p:graphicImage value="images/Imprimante.png" class="notificationBarPicto"/>
                                        <h:outputLabel value="Imprimer" class="notificationBarLibelle notificationBarLibelleImprimer"/>
                                    </p:commandLink>
                                    <p:commandButton widgetVar="widgetPrint" style="display: none">
                                        <p:printer target="refPlanCompteM61Export"/>
                                    </p:commandButton>
                                    <p:commandLink>
                                        <p:graphicImage id="idPictoRetrier" value="images/Retrier.png" class="notificationBarPicto"/>
                                        <h:outputLabel value="Re-trier" class="notificationBarLibelle notificationBarLibelleRetrier"/>
                                        <p:ajax listener="#{administrationPlanCompteM61ManagerBean.retrierTableau()}"
                                                onstart="PF('widgetPatienter').block()" 
                                                oncomplete="PF('widgetPatienter').unblock()"
                                                update="idRefPlanCompteM61"/>
                                    </p:commandLink>
                                    <h:inputText id="champBidonPourFocus" style="position: absolute; visibility: hidden"/>
                                    <h:inputText id="idTexteRechercher" value="#{administrationPlanCompteM61ManagerBean.texteRechercher}" class="tableauRechercherTexte"
                                                 onkeydown="desactiverToucheEntreeRecherche(event)">
                                        <p:ajax event="change" 
                                                listener="#{administrationPlanCompteM61ManagerBean.filtrerTableau()}"
                                                onstart="PF('widgetPatienter').block()" 
                                                oncomplete="PF('widgetPatienter').unblock()"
                                                update="idRefPlanCompteM61"/>
                                    </h:inputText>
                                    <p:watermark value="Rechercher..." for="idTexteRechercher"/>
                                    <p:commandLink>
                                        <p:graphicImage value="images/Loupe.png" class="tableauRechercherPicto" style="margin-left: -15px"/>
                                        <p:ajax event="click" 
                                                listener="#{administrationPlanCompteM61ManagerBean.filtrerTableau()}"
                                                onstart="PF('widgetPatienter').block()" 
                                                oncomplete="PF('widgetPatienter').unblock()"
                                                update="idRefPlanCompteM61"/>
                                    </p:commandLink>
                                    <p:commandLink onclick="PF('widgetNotificationBarMenuUtilisateur').hide()">
                                        <p:graphicImage id="idFermerNotificationBar" value="images/FermerRond.png" class="notificationBarPicto"/>
                                    </p:commandLink>
                                    <pe:tooltip value="Fermer" for="idFermerNotificationBar" myPosition="top right" atPosition="bottom left" styleClass="infoBulle"/>
                                </p:fragment>
                            </div>
                        </p:dialog>
                        <div class="tableau effetFade">
                            <p:dataTable id="idRefPlanCompteM61" widgetVar="widgetRefPlanCompteM61" var="ligne" class="tableauStyle" tableStyle="table-layout: auto"
                                         value="#{administrationPlanCompteM61ManagerBean.listeRefPlanCompteM61Filtree}" 
                                         rowKey="#{ligne.idPk}"
                                         selection="#{administrationPlanCompteM61ManagerBean.listeRefPlanCompteM61Selectionne}"
                                         rows="#{utilitaireManagerBean.tableauLignesReference}"
                                         emptyMessage="Aucun enregistrement trouvé"
                                         resizableColumns="true"
                                         liveResize="true"
                                         selectionMode="multiple" 
                                         sortMode="multiple" 
                                         nullSortOrder="-1"
                                         editable="true" 
                                         editMode="cell" 
                                         paginator="true"
                                         paginatorPosition="bottom"
                                         paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}">
                                <p:ajax event="page" onstart="PF('widgetPatienter').block()" oncomplete="PF('widgetPatienter').unblock()"/>
                                <p:ajax event="sort" onstart="PF('widgetPatienter').block()" oncomplete="PF('widgetPatienter').unblock()"/>
                                <f:facet name="header">
                                    <h:outputLabel value="Administration - Plan de compte M61" class="gris"/>
                                </f:facet>
                                <p:columns value="#{administrationPlanCompteM61ManagerBean.listeColonne}" var="colonne" columnIndexVar="iColonne" class="tableauContour" 
                                           headerText="#{colonne}" 
                                           sortBy="#{administrationPlanCompteM61ManagerBean.trierTableau(ligne, colonne)}">
                                    <p:cellEditor>
                                        <f:facet name="output">
                                            <!--Tableau de textes modifiables : outputPanel obligatoire pour un affichage correct-->
                                            <p:outputPanel class="#{iColonne lt 2 ? 'celluleCentrer texteGris' : 'texteGris'}">
                                                <!--Note de tableau-->
                                                <c:set var="note" value="#{noteManagerBean.rechercherNoteTableau('idRefPlanCompteM61', ligne.idPk, iColonne)}"/>
                                                <span id="Tableau:idRefPlanCompteM61:#{note.idPk}:#{ligne.idPk}:#{iColonne}:">
                                                    <p:graphicImage id="idImage" value="images/PostIt#{note.couleur}.png" 
                                                                    class="#{iColonne lt 2 ? 'tableauNoteCentrer' : 'tableauNote'}"
                                                                    rendered="#{not empty note}"/>
                                                </span>
                                                <pe:tooltip for="idImage" styleClass="infoBulle infoBulleNote" value="#{noteManagerBean.noteInfoBulle(note)}"/>
                                                <!--Valeur de la colonne-->
                                                <span id="Tableau:idRefPlanCompteM61:#{note.idPk}:#{ligne.idPk}:#{iColonne}:">
                                                    <c:set var="libelle" value="#{administrationPlanCompteM61ManagerBean.rechercherColonne(ligne, colonne)}"/>
                                                    <h:outputText id="idValeurColonne" value="#{empty libelle ? '&nbsp;' : libelle}"/>
                                                </span>
                                            </p:outputPanel>
                                        </f:facet>
                                        <f:facet name="input">
                                            <h:inputText value="#{administrationPlanCompteM61ManagerBean.valeurModifie}" class="celluleInputTableau"
                                                         maxlength="#{administrationPlanCompteM61ManagerBean.listeColonneLargeur.get(iColonne)}">
                                                <p:ajax event="change" listener="#{administrationPlanCompteM61ManagerBean.modifierValeurColonne(ligne, colonne)}"
                                                        oncomplete="PF('widgetBoutonEnregistrer').show()" 
                                                        update="idValeurColonne :form:idRetourAccueil"/>
                                            </h:inputText>
                                        </f:facet>
                                    </p:cellEditor>
                                </p:columns>
                                <f:facet name="footer">
                                    <div class="tableauFooter">
                                        <h:outputText id="idNombreLignesFiltre" 
                                                      value="#{fn:length(administrationPlanCompteM61ManagerBean.listeRefPlanCompteM61Filtree) == 0 || 
                                                               fn:length(administrationPlanCompteM61ManagerBean.listeRefPlanCompteM61Filtree) == fn:length(administrationPlanCompteM61ManagerBean.listeRefPlanCompteM61) ? null : fn:length(administrationPlanCompteM61ManagerBean.listeRefPlanCompteM61Filtree)}"/>
                                        <h:outputText id="idNombreLignesFiltreSeparateur" 
                                                      value="#{fn:length(administrationPlanCompteM61ManagerBean.listeRefPlanCompteM61Filtree) == 0 || 
                                                               fn:length(administrationPlanCompteM61ManagerBean.listeRefPlanCompteM61Filtree) == fn:length(administrationPlanCompteM61ManagerBean.listeRefPlanCompteM61) ? null : '&nbsp;/&nbsp;'}"/>
                                        <h:outputText value="#{administrationPlanCompteM61ManagerBean.listeRefPlanCompteM61.size()}" class="texteGris"/>
                                        <h:outputText value="#{administrationPlanCompteM61ManagerBean.listeRefPlanCompteM61.size() lt '2' ? 'ligne' : 'lignes'}" class="texteGris tableauFooterMarge"/>
                                    </div>
                                </f:facet>
                            </p:dataTable>  
                        </div>
                        <div id="idImageFond" class="imageFond"/>
                        <ui:include src="templateLogoBanniere.xhtml"/>
                        <ui:include src="templateCollectivite.xhtml"/>                    
                        <div>
                            <p:commandLink onclick="PF('widgetNotificationBarMenuUtilisateur').show()" class="enteteMenu enteteMenuPictoMenu effetFade">
                                <p:graphicImage id="idMenu" value="images/Menu.png"/>
                                <pe:tooltip value="Options" for="idMenu" myPosition="top right" atPosition="bottom left" styleClass="infoBulle"/>
                            </p:commandLink>
                            <p:commandLink id="idRetourAccueil">
                                <p:graphicImage id="idMaison" value="images/Home.png" class="enteteMenu enteteMenuPicto1 effetFade"/>
                                <pe:tooltip value="Accueil" for="idMaison" myPosition="top right" atPosition="bottom left" styleClass="infoBulle"/>
                                <p:ajax oncomplete="#{administrationPlanCompteM61ManagerBean.modificationTableau ? 'rcAfficherMessageQuitter()' : 'rcRetourPageAccueil()'}"
                                        update="#{administrationPlanCompteM61ManagerBean.modificationTableau ? 'idRcAfficherMessageQuitter' : 'idRcRetourPageAccueil'}"/>
                            </p:commandLink>
                            <p:remoteCommand id="idRcAfficherMessageQuitter" name="rcAfficherMessageQuitter"
                                             oncomplete="PF('widgetMessageQuitter').show()"/>
                            <p:remoteCommand id="idRcRetourPageAccueil" name="rcRetourPageAccueil" 
                                             action="pageAccueilSite.xhtml"/>
                        </div>
                        <ui:include src="templateNotePage.xhtml"/>
                    </p:outputPanel>
                    
                    <p:dialog id="idEnregistrer" widgetVar="widgetBoutonEnregistrer" width="90" height="6" position="right,top" showHeader="false" resizable="false"
                              class="tableauBoutonEnregistrerContainer"
                              visible="#{administrationPlanCompteM61ManagerBean.modificationTableau}">
                        <h:commandButton id="idBoutonEnregistrer" value="Enregistrer" class="tableauBoutonEnregistrer">
                            <pe:tooltip value="Enregistrer les modifications" for="idBoutonEnregistrer" myPosition="bottom right" atPosition="top center" styleClass="infoBulle"/>
                            <p:ajax listener="#{administrationPlanCompteM61ManagerBean.enregistrerTableau()}"
                                    onstart="PF('widgetPatienter').block()" 
                                    oncomplete="PF('widgetPatienter').unblock(), PF('widgetBoutonEnregistrer').hide(), PF('widgetMessageInformation').show()"
                                    update="idMessageInformation :form:idRetourAccueil"
                                    rendered="#{administrationPlanCompteM61ManagerBean.enregistrerTableau()}"/>
                        </h:commandButton>
                    </p:dialog>
                    <ui:include src="templatePatienter.xhtml"/>
                    <ui:include src="templateMessageInformation.xhtml"/>
                    <ui:include src="templateMessageQuitter.xhtml"/>
                    <ui:include src="templateNoteMenuContextuel.xhtml"/>  <------------------------------------------------------------------
                    <ui:include src="templateExportAdministrationPlanCompteM61.xhtml"/>
                </h:form>                      
            </f:view>
        </h:body>
    </html>
    templateNoteMenuContextuel.xhtml de la page avec contextMenu :

    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
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
          xmlns:p="http://primefaces.org/ui"
          xmlns:pe="http://primefaces.org/ui/extensions">
        <h:body>
            <ui:composition>
                <!--Menu contextuel-->
                <p:contextMenu for="idPage" beforeShow="noteMenuContextuelPosition()">  <----------------------------------------------------------------
                    <p:menuitem value="Gestion de note"
                                actionListener="#{noteManagerBean.gererNote()}"
                                oncomplete="PF('widgetNoteDialog').show()" 
                                update="idDialogNote"/>
                </p:contextMenu>
    
                <p:remoteCommand name="rcNoteMenuContextuelPosition" actionListener="#{noteManagerBean.menuContextuelPosition()}"/>
    
                <p:remoteCommand name="rcNotePosition" actionListener="#{noteManagerBean.noteDropPosition}"/>
    
                <!--Dialog de saisie d'une note-->
                <p:dialog id="idDialogNote" widgetVar="widgetNoteDialog" position="#{noteManagerBean.noteMenuContextuelLeft}, #{noteManagerBean.noteMenuContextuelTop}"
                          style="background-color: transparent; box-shadow: none; border: none; border-radius: 0; z-index: 2" class="effetZoom" showEffect="fade" hideEffect="fade" closable="false" resizable="false"> 
                    <f:facet name="header">
                        <p:graphicImage value="images/Crayon.png" style="position: absolute; top: 4px; left: 23px" class="effetFlip"/>
                        <p:outputLabel value="Note" style="position: absolute; top: 4px; left: 47px; font-size: 1.25em; color: white; text-shadow: 2px 2px 4px black"/>
                        <p:commandLink>
                            <p:graphicImage id="idPoubelle" value="images/Poubelle.png" width="15" style="position: absolute; top: 4px; right: 14px"/>
                            <pe:tooltip for="idPoubelle" value="Supprimer" myPosition="bottom left" atPosition="top right" styleClass="infoBulle"/>
                            <p:ajax oncomplete="PF('widgetMessageSupprimerNote').show()"
                                    update=":form:idMessageSupprimerNote"/>
                        </p:commandLink>
                    </f:facet>
                    <p:fragment id="idBordure">
                        <div style="position: absolute; top: 0; left: 0; height: 210px; width: 8px; border: none; z-index: 3; background-color: #{noteManagerBean.rechercherNoteCouleurHexa(noteManagerBean.noteCouleur)}"/>
                    </p:fragment>
                    <p:graphicImage value="images/PostIt.png" width="305" height="210" style="margin: -5px -11px -8px -11px"/>
                    <p:textEditor id="idTexte" value="#{noteManagerBean.noteTexte}" height="129"
                                  style="width: 298px; position: absolute; top: 0px; left: 8px; margin-left: -1px; background-color: transparent">
                        <f:facet name="toolbar"> 
                            <span class="ql-formats">
                                <button class="ql-bold"></button>
                                <button class="ql-italic"></button>
                                <button class="ql-underline"></button>
                            </span>
                        </f:facet>
                    </p:textEditor>
                    <div style="position: absolute; top: 13px; left: 118px">
                        <p:commandLink>
                            <p:graphicImage value="images/PostItJaune.png" style="margin-right: 8px"/>
                            <p:ajax listener="#{noteManagerBean.couleurNoteSelectionnee('Jaune')}" update="idBordure"/>
                        </p:commandLink>
                        <p:commandLink>
                            <p:graphicImage value="images/PostItOrange.png" style="margin-right: 8px"/>
                            <p:ajax listener="#{noteManagerBean.couleurNoteSelectionnee('Orange')}" update="idBordure"/>
                        </p:commandLink>
                        <p:commandLink>
                            <p:graphicImage value="images/PostItBleu.png" style="margin-right: 8px"/>
                            <p:ajax listener="#{noteManagerBean.couleurNoteSelectionnee('Bleu')}" update="idBordure"/>
                        </p:commandLink>
                        <p:commandLink>
                            <p:graphicImage value="images/PostItRose.png" style="margin-right: 8px"/>
                            <p:ajax listener="#{noteManagerBean.couleurNoteSelectionnee('Rose')}" update="idBordure"/>
                        </p:commandLink>
                        <p:commandLink>
                            <p:graphicImage value="images/PostItVert.png" style="margin-right: 8px"/>
                            <p:ajax listener="#{noteManagerBean.couleurNoteSelectionnee('Vert')}" update="idBordure"/>
                        </p:commandLink>
                        <p:commandLink>
                            <p:graphicImage value="images/PostItBlanc.png" style="margin-right: 8px"/>
                            <p:ajax listener="#{noteManagerBean.couleurNoteSelectionnee('Blanc')}" update="idBordure"/>
                        </p:commandLink>
                        <p:commandLink>
                            <p:graphicImage value="images/PostItRouge.png"/>
                            <p:ajax listener="#{noteManagerBean.couleurNoteSelectionnee('Rouge')}" update="idBordure"/>
                        </p:commandLink>
                    </div>
                    <p:commandLink class="bouton bouton1 boutonNote" style="left: 22px; width: 127px">
                        <p:outputLabel value="Enregistrer" style="margin-left: 36px"/>
                        <p:ajax oncomplete="PF('widgetNoteDialog').hide(), rcAfficherMessageEnregistrement()"
                                update="idRcAfficherMessageEnregistrement"/>
                    </p:commandLink>
                    <p:remoteCommand id="idRcAfficherMessageEnregistrement" name="rcAfficherMessageEnregistrement"
                                     actionListener="#{noteManagerBean.enregistrerNote()}"
                                     onstart="PF('widgetPatienter').block()"
                                     oncomplete="PF('widgetPatienter').unblock(), PF('widgetMessageInformation').show()"                         
                                     update="form:#{noteManagerBean.noteMenuContextuelTableau} idNotes idMessageInformation form:idRetourAccueil"/>
    
                    <p:commandLink type="button" class="bouton bouton2 boutonNote" style="right: 50px; width: 50px"
                                   onclick="PF('widgetNoteDialog').hide()">
                        <p:outputLabel value="Annuler" style="margin-left: 6px"/>
                    </p:commandLink>
                </p:dialog>
    
                <p:dialog id="idMessageSupprimerNote" widgetVar="widgetMessageSupprimerNote" class="messagePosition messageAvertissement effetZoom" showHeader="false" resizable="false" showEffect="fade" hideEffect="fade">
                    <p:graphicImage value="images/Important.png" class="messageImage effetFlip"/>
                    <div class="messageTexteLigne1">
                        <h:outputLabel value="Confirmez-vous la suppression de cette note ?" class="messageTexte"/>
                    </div>
                    <div align="right">
                        <h:commandButton value="Oui" class="bouton bouton1 boutonMessageErreur">
                            <p:ajax oncomplete="PF('widgetNoteDialog').hide(), PF('widgetMessageSupprimerNote').hide(), rcAfficherMessageSuppression()" 
                                    update="idRcAfficherMessageSuppression"/>
                        </h:commandButton>
                        <p:remoteCommand id="idRcAfficherMessageSuppression" name="rcAfficherMessageSuppression"
                                         actionListener="#{noteManagerBean.supprimerNote()}"
                                         onstart="PF('widgetPatienter').block()"
                                         oncomplete="PF('widgetPatienter').unblock(), PF('widgetMessageInformation').show()"
                                         update="form:#{noteManagerBean.noteMenuContextuelTableau} idNotes idMessageInformation"/>
                        <p:spacer width="5px"/>
                        <h:commandButton type="button" value="Non" onclick="PF('widgetMessageSupprimerNote').hide()" class="bouton bouton2 boutonMessage boutonMessageErreur"/>
                    </div>
                </p:dialog>
            </ui:composition>
        </h:body>
    </html>

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    novembre 2006
    Messages
    6 980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 6 980
    Points : 8 966
    Points
    8 966
    Billets dans le blog
    1
    Par défaut
    Je ne sais pas si c'est encore d'actualité mais les <p:contextMenu> devait se trouver après la définition de l'élément qui le référence, peux-tu essayer de le déplacer en fin de template ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    février 2015
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : février 2015
    Messages : 354
    Points : 142
    Points
    142
    Par défaut
    Non ça ne marche pas mieux.

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    novembre 2006
    Messages
    6 980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 6 980
    Points : 8 966
    Points
    8 966
    Billets dans le blog
    1
    Par défaut
    Je ne vois pas trop d'où ça pourrait venir mais je te suggère d'utiliser l'outil (très puissant) de debug de Firefox pour mettre un point d'arrêt dans ta méthode qui appelle la remoteCommand et de suivre pour retrouver l'origine des ces appels...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    février 2015
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : février 2015
    Messages : 354
    Points : 142
    Points
    142
    Par défaut
    Ok je vais voir ça.
    Merci.

Discussions similaires

  1. PrimeFaces : Datatable et menu contextuel
    Par denisduval75 dans le forum JSF
    Réponses: 0
    Dernier message: 20/12/2018, 10h19
  2. Primefaces : tableau et menu contextuel
    Par denisduval75 dans le forum JSF
    Réponses: 2
    Dernier message: 02/11/2018, 10h12
  3. Primefaces : désactiver le menu contextuel
    Par denisduval75 dans le forum JSF
    Réponses: 0
    Dernier message: 26/10/2018, 10h17
  4. [Débutant] Problème ouverture menu contextuel via un bouton
    Par Lookoum dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 27/11/2013, 16h21

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