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 :

problème de comprehension fonctionnement JSF


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Par défaut problème de comprehension fonctionnement JSF
    Bonjour à tous,

    J'utilise PrimeFaces comme framework et je développe sous eclipse serveur tomcat.

    Ce que je ne comprend pas c'est que ds ma page xhtml je fais apelle à une méthode de mon managedbean ds un p:commanbutton

    et que systématiquement à l'ouverture de ma page il lance cette méthode ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <p:commandLink  action="#{gererProfilMng.ajouterProfil()}">  
                <p:graphicImage  value="/resources/images/Ajouter.gif" height="15px" /> 
     
     
            </p:commandLink >
    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
     
    @ManagedBean
    @ViewScoped
    public class GererProfilMng {
     
    	/**
             * 
             */
     
    	private ProfilIHM profilIHM;
    	private List<ProfilIHM> profilList;
    	private GererProfilWS transform;
    	@ManagedProperty(value="#{authentifierMng}")
    	private AuthentifierMng authentifierMng;
     
     
    	public GererProfilMng(){
    		profilIHM = new ProfilIHM();
    		transform = new GererProfilWS();
    		profilList = new ArrayList<ProfilIHM>();
     
    	}
     
    public void ajouterProfil(){
     
    	UtilisateurDTO utilisateurDTO = new UtilisateurDTO();
    	utilisateurDTO.setAdresseMail(authentifierMng.getUtilisateurSessionFinal().getAdresseMail());
    	utilisateurDTO.setMdp(authentifierMng.getUtilisateurSessionFinal().getMotDePasse());
     
    	utilisateurDTO.setCentreCode(authentifierMng.getUtilisateurSessionFinal().getCentreActuel().getCode());
    	ProfilDTO profilDTO = new ProfilDTO();
    	profilDTO.setLibelleCourt(profilIHM.getLibelleCourt());
    	profilDTO.setLibelleLong(profilIHM.getLibelleLong());
     
    	try {
    		transform.transformeCreerProfil(utilisateurDTO, profilDTO);
    	} catch (RemoteException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
     
     
    }
    Qu'est ce que je n'ai pas compris ds le fonctionnement JSF ?
    Et comment je peux empécher ça ?

    d'avance merci


    EDIT: j'ai modifié le onclic sur le commandlink par action maintenant il ne charge plus la méthode au chargement de la page mais quand je clique dessus rien ne se passe....

  2. #2
    Membre expérimenté Avatar de fastdeath124
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2011
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Août 2011
    Messages : 117
    Par défaut
    J'ai remarqué que la méthode ajouterProfil ne prend rien en paramètre d'entrée dans le ManagedBean, alors que l'appel a été fait avec un paramètre.
    De plus, cette méthode doit retourner un String, et selon la valeur de retour, la redirection se fait (la redirection est déclarée dans le fichier de configuration faces-config.xml au niveau des balises navigation-rule).
    Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <navigation-rule>
      <from-view-id>/jsp/MaPageInitiale.jsp</from-view-id>
      <navigation-case>
      <from-outcome>success</from-outcome>
      <to-view-id>/jsp/page1.jsp</to-view-id>
      </navigation-case>
      <navigation-case>
      <from-outcome>failure</from-outcome>
      <to-view-id>/jsp/page2.jsp</to-view-id>
      </navigation-case>
    </navigation-rule>
    Dans cet exemple, la méthode doit retourner "success" ou "failure".

  3. #3
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Par défaut
    Citation Envoyé par fastdeath124 Voir le message
    J'ai remarqué que la méthode ajouterProfil ne prend rien en paramètre d'entrée dans le ManagedBean, alors que l'appel a été fait avec un paramètre.
    De plus, cette méthode doit retourner un String, et selon la valeur de retour, la redirection se fait (la redirection est déclarée dans le fichier de configuration faces-config.xml au niveau des balises navigation-rule).
    Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <navigation-rule>
      <from-view-id>/jsp/MaPageInitiale.jsp</from-view-id>
      <navigation-case>
      <from-outcome>success</from-outcome>
      <to-view-id>/jsp/page1.jsp</to-view-id>
      </navigation-case>
      <navigation-case>
      <from-outcome>failure</from-outcome>
      <to-view-id>/jsp/page2.jsp</to-view-id>
      </navigation-case>
    </navigation-rule>
    Dans cet exemple, la méthode doit retourner "success" ou "failure".
    oui effectivement mais en fait il n'y a rien en paramètre c'est à la suite de nombreux que j'ai laissé ce paramétre je l'enléve de suite

    mais cela ne change rien sur le fait que lorsque que je clique sur le bouton rien ne se passe il ne passe pas ds la méthode. test fait avec point d'arret en mode debug...

    En tout cas merci pour la réponse

  4. #4
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Bonjour ,

    est-ce que l'import de @ManagedBean est correct ? (javax.faces.ManagedBean) ?

    si c'est une "action", alors ta méthode doit retourner une String,
    sinon, c'est un "actionListener" et donc il faut utiliser l'attribut "actionListener" au lieu de "action".

    Tu peux combiner actionListener et action dans le même tag JSF, l'action n'étant déclenché que si l'actionListener se passe bien.

    Si tu ne mets pas d'action, alors il restera sur la page, et en mode AJAX, donc il faut que tu fasses attention à bien rafraîchir (update).

  5. #5
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Par défaut
    Citation Envoyé par fxrobin Voir le message
    Bonjour ,

    est-ce que l'import de @ManagedBean est correct ? (javax.faces.ManagedBean) ?

    si c'est une "action", alors ta méthode doit retourner une String,
    sinon, c'est un "actionListener" et donc il faut utiliser l'attribut "actionListener" au lieu de "action".

    Tu peux combiner actionListener et action dans le même tag JSF, l'action n'étant déclenché que si l'actionListener se passe bien.

    Si tu ne mets pas d'action, alors il restera sur la page, et en mode AJAX, donc il faut que tu fasses attention à bien rafraîchir (update).
    Salut ,

    Alors effectivement après avoir cherché un peu je suis passé en ActionListener.

    J'ai trouvé une bonne piste j'avais oublié de préciser que mon bouton se trouve dans un p:dialog...en fait si je le copie-colle sur la page principal il fonctionne très bien mais il ne fait absolument rien ds le p:dialog

    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
     
    <p:dialog widgetVar="nouveauProfil" modal="true"  appendToBody="true" closable="false" resizable="false">
    		<h:form>
    		<p:panel>
    		<h:panelGrid columns="2" style="border-style:none" cellspacing="10">
    		<h:outputLabel value="#{msg['lib.libelle']}" />
    		<p:inputText value="#{gererProfilMng.profilIHM.libelleCourt}"></p:inputText>
    		<h:outputLabel value="#{msg['libelle.libelle']}" />
    		<p:inputText value="#{gererProfilMng.profilIHM.libelleLong}"></p:inputText>
     
     
    		<p:commandButton value="test" actionListener="#{gererProfilMng.ajouterProfil()}" oncomplete="nouveauProfil.hide()">  
            </p:commandButton >
     
            <p:commandLink onclick="nouveauProfil.hide()">  
                <p:graphicImage  value="/resources/images/Annuler.gif" height="15px" /> 
     
     
            </p:commandLink> 
    		</h:panelGrid> 
    		</p:panel>
     
     
    		</h:form>
    		</p:dialog>
    est-ce que ça peu être du au balise form ou un truc du genre ?

    Ce qui est génial c'est qu'il m'exécute le onComplete alors qu'il ne passe même pas ds la méthode ...

  6. #6
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Tu veux qu'il ferme ton p:dialog ?
    est-ce que le p:commandButton est bien dans son propre formulaire ? (c'est plus pratique).

    si il n'est pas dans son propre formulaire, il doit bloquer en phase de validation sur les autres données (invalide) du formulaire, il faut donc que tu indiques explicitement quels sont les "champs" à traiter avec l'attribut "process".


    Je te recommande de faire un h:form spécifiquement pour le p:dialog et de ne pas faire d'imbrication de h:form

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

Discussions similaires

  1. probléme flashVar ne fonctionne pas
    Par Invité dans le forum Flash
    Réponses: 0
    Dernier message: 14/08/2008, 00h34
  2. Problème avec UPDATE EJB + JSF
    Par GeantBioHazard dans le forum JSF
    Réponses: 8
    Dernier message: 19/02/2008, 13h34
  3. Problème pour faire fonctionner OpenVpn.
    Par pcsystemd dans le forum Administration système
    Réponses: 1
    Dernier message: 29/08/2007, 00h27
  4. Réponses: 1
    Dernier message: 03/08/2007, 10h09
  5. [Cookies] problème de comprehension-sessions
    Par fk04 dans le forum Langage
    Réponses: 3
    Dernier message: 06/06/2006, 21h09

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