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 :

Probleme RequestContext ne marche pas


Sujet :

JSF Java

  1. #1
    Membre régulier
    Probleme RequestContext ne marche pas
    Bonjour,

    j'ai besoin de faire un appel d'une page xhtml dans une autre page mais je constate que mon application n'arrive pas
    à ouvrir une autre fenêtre de dialogue.

    Comme si la méthode RequestContext ne fonctionne pas avec primefaces 6.1 (sous netbeans 8).
    voici le code:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        public String brefDialog(){
            System.out.println("Appel page SelectionPersonnel");
            Map<String,Object>proprietes=new HashMap<>();
            proprietes.put("modal",true);
            proprietes.put("resizable",false);
            proprietes.put("contentHeight",470);
     
            RequestContext.getCurrentInstance().openDialog("SelectionPersonnel",proprietes,null);
             System.out.println("Fin Appel page SelectionPersonnel");
             return "";
        }

  2. #2
    Modérateur

    C'est normal, la méthode openDialog est Deprecated.


    [TR="class: rowColor"]
    [TD="class: colFirst"]abstract void
    [TH="class: colSecond"]openDialog&#8203;(String outcome)[/TH]
    [TD="class: colLast"] Deprecated. Use PrimeFaces.dialog().openDynamic() instead

    [TR="class: altColor"]
    [TD="class: colFirst"]abstract void
    [TH="class: colSecond"]openDialog&#8203;(String outcome, Map<String,Object> options, Map<String,List<String>> params)[/TH]
    [TD="class: colLast"] Deprecated. Use PrimeFaces.dialog().openDynamic() instead
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Merci pour votre réponse, si possible de me donner un exemple comment utiliser cette nouvelle méthode.
    Lorsque j’introduis cette méthode il y a une erreur.


  4. #4
    Modérateur

    Et bien il faut avoir le jar de Primefaces dans le classpath et bien sûr il faut faire l'import...
    Avec Eclipse, on fait Ctrl+Espace sur le "Primefaces" souligné ou (Ctrl+Shift+o dans la classe) et ça génère la ligne d'import, sinon, on peut toujours le faire soit-même, la classe est org.primefaces.context.RequestContext.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Merci pour ta réponse dans mon classthpath j'ai un jar que voici:


    En appuyant sur la touche ctrl+ espace, j'obtiens:



    Si je dois créer moi même cette classe, comment dois-je le faire. Aidé-moi je suis bloqué pour avancé dans mon apprentissage.

  6. #6
    Modérateur

    Il ne s'agit pas de créer cette classe mais de la référencer, seule la ligne import est à ajouter en début de source (sous la directive package et avant la ligne class)
    En clair, tu ajoutes cette ligne
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    import  org.primefaces.PrimeFaces;



    Enfin, je dis ça, mais je vérifie sur la base d'une lib primeface-6.2, je ne sais pas si la 6.1 était différente.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre régulier
    Oui, je viens de changer le jar primefaces 6.1 à 6.2, les messages d'erreurs ne s'affiche plus sur la méthode sauf qu'en cliquant sue le bouton recherche,
    aucune fenêtre ne s'ouvre pas.

    La méthode corrigé dans le bean Managé devient:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void showPersonnelDialog(){
            System.out.println("Appel page SelectionPersonnel");
            Map<String,Object>proprietes=new HashMap<>();
            proprietes.put("modal",true);
            proprietes.put("resizable",false);
            proprietes.put("contentHeight",470);
     
            PrimeFaces.current().dialog().openDynamic("SelectionPersonnel",proprietes, null);       
             System.out.println("Fin Appel page SelectionPersonnel");         
        }


    Page xhtml:

    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
     
    <?xml version='1.0' encoding='UTF-8' ?>
    <ui:composition 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:p="http://primefaces.org/ui"
    		template="/resources/templates/generalTemplate.xhtml">
     
        <ui:define name="title">
            APTITUDE MEDICALE
        </ui:define>
     
        <ui:define name="content">       
     
            <div class="panel panel-primary">
                <div class="panel-heading">					
                    APTITUDE MEDICALE				
                </div>
                <div class="panel-body">
                   <h:form id="administration"> 
                         <!--affichage message d'erreur-->
                         <p:growl id="msg" showDetail="true"/>
     
                        <div class="form-group">
                            <h:outputLabel value="Personnel" for ="nompe" class="control-label"/>
                            <h:panelGroup>
                                <h:inputText id="nompe" size="50" value="#{personnelBean.nompe}"/>
                                <h:inputText id="idpe"  value="#{aptitudeBean.idpe}"/>
                                <p:commandButton icon="ui-icon-search" title="Recherche"
                                                 action="#{personnelBean.showPersonnelDialog()}"
                                   process="@this" update="@none"/>
                            </h:panelGroup>                      
                        </div>
     
                         <div class="form-group"> 
                            <h:outputLabel value="Medecin" for="idmed" class="control-label"></h:outputLabel>                        
                            <h:selectOneMenu id="idmed" value="#{aptitudeBean.idmed}" 
                               style="width:70%" class="form-control">
                            <f:selectItem itemLabel="Selectionnez un médecin" itemValue=""  />
                            <f:selectItems value="#{medecinBean.medecinList}" 
                                           var="med" itemLabel="#{med.nommed}" itemValue="#{med.idmed}"/>
                            </h:selectOneMenu>
                        </div>
     
                        <div class="form-group">
                            <h:outputLabel value="Date délivrance" for="datedel" class="control-label"></h:outputLabel>
                            <p:inputMask id="datedel" value="#{aptitudeBean.datedel}"
                                        mask="9999/99/99" />
                        </div>    
     
                        <div class="form-group">
                            <h:outputLabel value="Date expiration" for="dateexp" class="control-label"></h:outputLabel>
                            <p:inputMask id="dateexp" value="#{aptitudeBean.dateexp}"
                                        mask="9999/99/99" />
                        </div> 
     
                        <div class="form-group">
                            <h:outputLabel value="Observations" for="obs" class="control-label"></h:outputLabel>
                            <p:inputTextarea 
                                      placeholder="Observation, max 50 caractéres.."
                                      autoResize="true" 
                                      value="#{aptitudeBean.observation}" 
                                id="obs" class="form-control">
                            </p:inputTextarea>
                        </div>
     
                         <p:commandButton value="valider" ajax="false" update="administration:msg" 
                                          actionListener="#{aptitudeBean.enregistrer}" 
                                          class="btn bg-primary">
                              <f:ajax execute="@form" render="@form" />
                         </p:commandButton>
     
                   </h:form>
                </div><!--fin div panel body-->
            </div> <!--fin div panel panel primary-->        
     
        </ui:define>
     
    </ui:composition>


    On devrait avoir :



    en cliquant sur recherche, la fenêtre suivante devrait s'ouvrir:


    Malheureusement rien ne se fait.

  8. #8
    Modérateur

    Quelle est la structure arborescente de tes pages ?
    La page SelectionPersonnel se trouve dans le même répertoire que la page que tu montres ?
    Si rien ne s'affiche, c'est peut-être parce que Primefaces cherche ta page au mauvais endroit, tu peux déjà essayer en mettant le chemin complet de la page à ouvrir.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre régulier
    oui dans le même dossier pel de l'arborescence.



    Merci pour toutes tes observations. J'ai testé sans intégrer le template et cela ça marche.
    Je dois chercher l'element qui ne marche pas dans mon template pour le corrige.


    Je peux maintenant poursuivre mon apprentissage.

###raw>template_hook.ano_emploi###