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

Servlets/JSP Java Discussion :

[JSF]Affichage de beans depuis une ArrayList dans une JSP


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    40
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 40
    Par défaut [JSF]Affichage de beans depuis une ArrayList dans une JSP
    Bonjour à tous,

    Dans une application JSF, je veux afficher des informations provenant d'une ArrayList. Cette ArrayList contenant elle-même des Bean. C'est les propriétés de ce Bean que je veux afficher, un peu comme avec Struts et son <logic:iterate> suivie de <bean:write>...

    Voici mes 2 classes:

    RechercheBean (contenant l'ArrayList et disponible sur la session en tant que "recherche")
    public class RechercheBean{
    ...
    public void setPages(ArrayList pages) {
    this.pages = pages;
    }
    public List getPages() {
    return pages;
    }
    private ArrayList pages; //contenant les bean PageRechercheBean
    }


    PageRechercheBean (disponible en nombre variable dans l'ArrayList)
    public class PageRechercheBean {
    ...
    public void setTitre(String titre) {
    this.titre = titre;
    }
    public String getTitre() {
    return titre;
    }
    private String titre;
    ...
    }
    Que dois-je écrire dans la JSP pour afficher ces informations? (par exemple: le titre...)

    Merci pour votre aide!

    Adrien

  2. #2
    Membre averti
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    40
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 40
    Par défaut
    Réponse trouvée dans les FAQs...

    http://schmitt.ftp-developpez.com/tu...troduction.pdf

    Désolé!

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Par défaut
    utilises le tag suivant:
    Si tu as des problèmes n'hésites pas

  4. #4
    Membre averti
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    40
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 40
    Par défaut Détection du lien cliqué
    J'ai effectivement pu utiliser une dataTable pour afficher mes données. Merci!

    Mais maintenant, un autre problème se pose. Lorsque l'utilisateur clic sur une de ces pages (un lien), je souhaite savoir sur quel lien il a cliqué, et ceci depuis une une méthode.
    Voici la JSP pour être plus clair:
    <h:dataTable value="#{recherche.pages}" var="page" border="0" style="font-size: 10pt;">
    <h:column>
    <t:commandLink action="#{recherche.visitePageAction}" id="recherchePage">
    <h:outputText value="#{page.titre}" id="pageTitre" escape="false"/>
    </t:commandLink>
    <f:verbatim><br></f:verbatim>
    <h:outputText value="#{page.extrait}" escape="false"/>
    </h:column>
    </h:dataTable>
    Lorsque je rentre dans la méthode visitePageAction, je dois pouvoir savoir sur quel lien l'utilisateur a cliqué pour aller ensuite rechercher le bon contenu. J'ai essayé d'utiliser un ActionListener pour récupérer la valeur d'un InputHidden mais comment ensuite savoir duquel il s'agit...

    Comment faire???

    Merci pour votre aide!

    Adrien

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Par défaut
    A mon avis dans ton cas la meilleur solution est d'utiliser getRowData ou getRowIndex.

    Pour cela tu dois binder ta datatable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <h:dataTable binding=#{recherche.view} value="#{recherche.pages}" var="page" border="0" style="font-size: 10pt;">
    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
     
    et dans ta classe View :
    public class View {
     
    		private UIData dataTable;
     
         public int selectedRow{
             return (dataTable.getRowIndex);
         }
     
        public object selectedObjet{
          return (dataTable.getRowData);
       }
     
    }
    selectedRow te renvoie le numero de la ligne sur laquelle tu clique
    selectedObjet te renvoie l'objet composant ta ligne.

    donc dans ta fonction recherche.visitePageAction :

    public visitePageAction{
    int ligne = view.selectedRow;
    .....
    Ton code
    ....
    }

    Une autre solution pourrait aussi de passer des paramétres du genre #{page.ligne} (bien sur il te faut une variable ligne dans ton objet page) :
    2 méthodes sont bien expliqués ici : http://wiki.apache.org/myfaces/Execu...ttonParameters

    Il y a aussi une 3éme methode c'est de passer un attribut avec le tag <f:attribute>. l'attribut est alors lié au composant (ce qui n'est pas le cas pour les 2 méthodes avant) tu recupere alors le composant par un ActionEvent puis e.getcomponent.getattribute("name").

    voila les solutions qui sont applicables. La prémiére etant indéniablement la meilleur.

  6. #6
    Membre averti
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    40
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 40
    Par défaut
    Merci pour cette explication très complète!

    Il est vrai que la première solution semble la plus propre! J'ai cependant travaillé avec la 3ème (passage d'un paramètre), et cela fonctionne aussi très bien. Elle est peut-être un peu moins "compliquée" que la première.

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

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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