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 :

Appel à methode d'un bean depuis JSF (sans évenement)


Sujet :

JSF Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 18
    Par défaut Appel à methode d'un bean depuis JSF (sans évenement)
    Bonjour,
    Voila je débute en JSF et Spring, j'ai un peu de mal tellement la programmation est différente d'un classique JSP/Servlet.
    J'ai fait une Authentification SSO qui me renvoi un paramètre le login de l'utilisateur en session (#{sessionScope['_const_cas_assertion_'].principal}).

    J'aimerai pouvoir appeller une methode sur un Bean en passant le login en parametre du style :

    #{GestionnaireHome.setGestionnaire(sessionScope['_const_cas_assertion_'].principal)}

    Afin de pouvoir afficher plus bas dans ma page son nom prenom par exemple :

    #{GestionnaireHome.nom}
    #{GestionnaireHome.prenom}

    Comment faire cela sans être obligé de passer par des evenement utilisateur de type Ajax par exemple.

    Je précise que dans ma version de EL, je ne peux pas passer les paramètres entre parentheses. je ne sais donc pas comment passer un paramètre à une methode d'un bean.

    Merci d'avance pour votre aide.

    Jérémy

  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
    La communication entre la page JSF et le Bean peut se faire aussi à travers des attributs. Voici un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:inputText style="width: 400px" value="#{monBean.monAttribut }"/>
    Avec monAttribut est un attribut du Bean (et n'oublis pas de générer les accesseurs de cet attribut pour que la page JSF puisse le récupérer et le mettre à jour).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 18
    Par défaut
    Salut fastdeath et merci pour ta réponse.
    cette partie la de JSF je commence à la maitriser,
    Ce que je n'arrive pas à faire c'est passer un parametre que j'ai dans ma JSF vers mon bean pour qu'il s'instancie comme il faut.

    Exemple du bean :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class GestBean
    {
       private Gestionnaire gest;
     
       public void setGest(uid)
       {
            gest = new Gestionnaire(uid);
       }
    }
    je souhaite donc pouvoir apeller la methode setGest() en lui passant le paramètre que j'ai en session.
    Comme on pourrait faire en prog classique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Instanciation
    gestBean.setGest(uid).
    // C'est ok, on peut afficher le nom et la date de naissance.
    gestBean.getGest().getName().
    gestBean.getGest().getBirth().

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 162
    Par défaut
    Bonjour jeyflip,

    En ce qui concerne ton problème, il y a plusieurs façon d'envisager une solution, suivant tes exigences.

    Tout d'abord, tu souhaites pouvoir envoyer un paramètre de ta page cliente vers ton serveur.

    Soit tu utilises les attributs liés aux composants de ta page, soit tu peux effectivement envoyer un paramètre de façon spécifique.

    Mais tu ne pourras pas appeler manuellement ton setter depuis ta page cliente. Les appels de fonction depuis la page cliente, nécessite une signature particulière et n'admette en paramètre que des objets de type ou sous-type Event. Ce qui indique, que ce moyen, n'est pas prévu pour le passage de paramètre.

    A savoir par contre, que tes setters sont appelés implicitement, en utilisant les attributs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:inputText style="width: 400px" value="#{monBean.monAttribut }"/>
    Dans cet exemple donné par fastdeath, lors de la validation du formulaire de ta page, ou lors d'un appel Ajax adéquat, le setter de "monAttribut" sera appelé automatiquement pour renseigner la valeur saisie (Comportement que tu souhaites reproduire il me semble, à moins qu'un élément contraignant que tu aurais omis de préciser empêche ceci)

    Sinon il y a bien un moyen pour l'envoi de paramètre via la balise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //Cote client - nécessite d'être encapsulée dans une balise validatrice de formulaire, ou d'apel ajax
    <f:param name="nom_valeur" value="#{valeur}" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //Cote serveur
    Object valeur_recuperee = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("nom_valeur");
    Mais cette deuxième façon est une manière beaucoup plus occasionnelle de récupérer des paramètres coté serveur. Elle est utilisée pour des données qui ne sont pas saisies par les utilisateurs, car pour ça, il y a la méthode des attributs.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 18
    Par défaut
    Et bien justement je pense qu'il n'est pas nécessaire de passer par le client.
    je pense qu'il doit me manquer une connaissance (en Spring peut être)
    pour executer une methode d'un bean avec param avant de générer la JSF et la renvoyer vers le client.

    serveur Auth ---UID---> Application JAVA (génération de la JSF en fonction de l'uid) ---> envoi de l'html généré au client.

Discussions similaires

  1. Appel de code JSP depuis JSF
    Par troubleshooting dans le forum JSF
    Réponses: 3
    Dernier message: 29/04/2009, 17h22
  2. appel methode bean dans selectOneMenu
    Par psycho_xn dans le forum JSF
    Réponses: 12
    Dernier message: 11/09/2008, 16h49
  3. Réponses: 2
    Dernier message: 18/07/2008, 11h58
  4. appel methode de form principale depuis form secondaire
    Par OLman135 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 17/07/2008, 08h39
  5. [JSF]Affichage de beans depuis une ArrayList dans une JSP
    Par adrien.nicolet dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 05/06/2006, 17h33

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