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

  1. #1
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    40
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 40
    Points : 37
    Points
    37
    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
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    40
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

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

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

    Désolé!

  3. #3
    Membre éprouvé

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

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 40
    Points : 37
    Points
    37
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Points : 514
    Points
    514
    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
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    40
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 40
    Points : 37
    Points
    37
    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.

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Points : 514
    Points
    514
    Par défaut
    L'avantage de la 1ére solution, c'est qu'elle est ré-utilisable. tu as juste besoin d'une classe vue et ensuite tu bind toutes tes datatables sur cette vue. Ansi pour chaque datatable que tu fait, tu as deja une fonction te permettant de connaitre la ligne cliqué.

    Dans les autres solutions tu devras crée des attributs spécifiques à chaque commandLink de datatable. Et puis tu vas etre obligé d'utilisé uniquement des actionsListener (dans le cas de la 3éme solution). Pour une petite appli c'est facilement faisable mais des que ton projet prend de l'ampleur ça devient difficelement maintenable.

    Ceci dit, si tu veux savoir dans quelle colonne tu as cliqué tu ne peux pas utiliser les getRowIndex et la l'utilisation de paramétre et d'attribut devient alors intéressant.

    Voila. En comme l'as dit Benjamin,si tu as d'autres probléme n'hésite pas

+ 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