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 :

Appeller une méthode des l'ouverture de la page


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Points : 42
    Points
    42
    Par défaut Appeller une méthode des l'ouverture de la page


    Je souhaiterais appeller une méthode en java des l'ouverture de la page pour pouvoir initialiser un objet.

    Ceux que je pourais faire,c'est d'appeller une page bidon en jsp qui récupere certaines valeurs pour récuper les informations dans la base afin de créer mon objet.Et pour finir,d'appeller ma page jsf qui aura l'objet initialisé par l'objet que j'aurais crée auparavant.

    Mais, je n'aimerais pas passer par une page jsp, directement le faire à partir de ma page jsf, ou bien un autre moyen propre à jsf permettant d'initialiser qu'elle que champ de mon bean des l'ouverture de ma page
    J'ai vu un sujet répondant à peut prés à mon problème ICI
    Mais comment récuper l'id(parametre passé à la page) dans la fonction appellé par beforePhase?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    FacesContext.getCurrentContext() te renvoie le context JSF courant, à partir de là t'as accès à la requete http et aux paramètres de celle-ci. Effectivement, un phase cycle listener, dans ton cas, est approprié.

  3. #3
    Membre confirmé Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Points : 597
    Points
    597
    Par défaut
    Bon, si on reprend ton problème c'est concrètement passer en param un id à une page jsf et faire en sorte qu'elle affiche dans ses champs le détail de la ligne de la table (en gros).

    Imaginons que ton objet s'appelle developpeur. tu passes page.jsf?iddev=5

    Dans ton managed beau tu cre un
    private Developpeur dev;

    un getter et setter pour cette variable.
    Dans le getter du fais :

    if (dev == null)
    {
    // premier chargement de la page, tu va lire dans la request l'id passé et tu charges l'objet.
    }
    return dev;



    tu ajoutes à ta page JSF un t:savestate pointant sur ton #{tongbackbean.dev}
    Ainsi, même lors d'un post back ton objet sera sauvegardé dans ta page et dans le getter il ne sera jamais null. (Scope page sous seam en gros).

    des questions?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Points : 42
    Points
    42
    Par défaut
    merci,une petite question,je ne vois pas comment pointer mon bean.....?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    t:savestate pointant sur ton #{tongbackbean.dev}

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Points : 58
    Points
    58
    Par défaut
    Salut stephane92400

    la methode que t'appele avec beforePhase doit avoir pour signature :

    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
     public void tamethode (PhaseEvent event){
         // on récupère le context
         FacesContext context = event.getFacesContext();
    
         //on récupère ton parametre
         HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
         String indice = request.getParameter("indice");
    
        // initialiser ton bean avec ce parametre en créant une value expression
       ValueExpression ve = context.getApplication().getExpressionFactory().createValueExpression(context.getELContext(),"#{tonbean}", java.lang.Object.class);
       Object tonbean = new Object(indice);  //par exemple
       
       //affectation à la value expression
       ve.setValue(context.getELContext(),tonbean);
    
        
     }
    voila

  6. #6
    Membre confirmé Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Points : 597
    Points
    597
    Par défaut
    Pour pointer le bean ?

    C'est dans ton managed bean JSF tout simplement.
    exemple :
    <t:saveState value="#{testRepartitionAgence.irisFiltre}" />


    testRepartitionAgence est un managed bean JSF
    irisFiltre est une valeur privée avec un getter et setter public...


    Pour Medii : je pense pas qu'un phase listener soit nécessaire lorsque on peut faire un simple lazy loading du paramètre ....

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Points : 42
    Points
    42
    Par défaut
    qu'entends tu par lazy loading du paramètre heid?

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/02/2014, 10h41
  2. Appeler une méthode en spécifiant le nom des arguments
    Par Christophe Genolini dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 24/06/2013, 14h54
  3. Appeller une methode des l'ouverture de la page
    Par stephane92400 dans le forum JSF
    Réponses: 4
    Dernier message: 27/09/2007, 15h16
  4. Appeler une méthode dynamiquement
    Par doof dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/01/2005, 23h15
  5. Comment l'appel à une méthode virtuelle....
    Par Blobette dans le forum C++
    Réponses: 7
    Dernier message: 07/12/2004, 13h55

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