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 :

A votre avis, une page JSF ou plusieurs


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 48
    Par défaut A votre avis, une page JSF ou plusieurs
    Bonjour à tous

    Je suis à la recherche d'une solution qui me permet de faire une seule page JSF pour afficher des données depuis la base selon un Id choisi par l'utilisateur.

    Je m'explique:
    J'ai des clients qui se connectent à leurs home perso pour voir une liste de "doc" qui leur appartient. Chaque element de cette liste est représenté par un lien, qui, au clic, doit renvoyer vers une page qui affiche toutes les donnes de ce doc (données qui doivent être récupérées depuis la base).

    Ce que je veux faire, serait de minimiser au max le code en faisant seulement une page JSF unique pour l'affichage des données.
    J'ai pensé donc à faire passer l'id du doc (lors du clic sur le lien) vers cette page d'affichage, puis lancer une requête depuis mon BackedBean avec ce même Id afin de récupérer les champs concernés!

    Mais Je ne sais pas comment m'y prendre
    ==> comment acheminer l'id cliqué de la page client vers la page affichage?
    ==>Comment puis je lancer la requete (ou la mth depuis le BackedBean) sans avoir une action rattachéé au préalable à un composant JSF???

    Auriez vous des réponses ou des suggestions SVP??
    Merci

  2. #2
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    en utilisant les getter du bakcing bean pour faire la recherche base de donnée et en utilisant les managed property, il y a moyen d'y arriver. Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="document.jsf?documentId=12345">....
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class DocumentBean{
        private String id;
        private Document document;
        public void setId(String id){
            this.id=id;
        }
        public String getId(){return id;}
        public Document getDocument(){
            if (document==null){
                // charger le document depuis la db + id
            }
            return document;
        }
    }
    Page jsf (example)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputText value="#{requestDocument.document.name}"/>
    faces-config.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <managed-bean>
      <managed-bean-name>requestDocument</managed-bean-name>
      <managed-bean-class>my.package.DocumentBean</managed-bean-class>
      <managed-bean-scope>request</managed-bean-scope>
      <managed-property>
        <property-name>id</property-name>
        <property-class>java.lang.String</property-class>
        <value>#{params.documentId}</value>
      </managed-property>
    </managed-bean>
    Ainsi, lors de l'utilisation de "requestDocument", le champ id sera toujours initialisé avec la valeur retournée par #{params.documentId} qui, si ma mémoire est bonne, est correcte

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 48
    Par défaut
    merci tchize_ pour ta réponse rapide.
    Je pense que ceci devrai plutôt marcher. Mais en fait, mes documents dont je parle ne sont pas des vrai doc, mais juste un ensemble de valeurs sur des colonnes de BD (qui ensembles, forment les données d'un doc pour l'utilisateur). Ceci ne changera pas grande chose je pense du moment où l'id est récupérable au niveau du Backing Bean et la page JSF (chaque outputText prendra la valeur adéquate comme tu l'as fait ).

    Je vois que la clé de tout cela est le managed-bean-scope qui est mis à 'request' de tel façon à ce que la propriété Id de 'DocumentBean' soit remplie par défaut et toujours par #{params.documentId} (avec : params.documentId qui correspond à ?documentId=12345 dans notre exemple).

    Ceci dit, je suppose que le transfert de l'id se fait simplement en ajoutant '?documentId=IdNumber' dans le lien, et que ce même Id est implicitement chargé dans le Id du Backing Bean requestDocument garce à la config de faces-config.xml !!

    Merci de me corriger si ce que j'ai compris est faux!

  4. #4
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    oui c'est à peux près ca. Lorsque JSF crée le bean, il va initaliser toutes les managed properties en faisant l'évaluation de ce qui se trouve dans la valeur. Dans ce cas ci l'EL va chercher un paramètre de la requete. On utilise la même technique pour, par exemple, lier des Beans entre eux

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 48
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    oui c'est à peux près ca. Lorsque JSF crée le bean, il va initaliser toutes les managed properties en faisant l'évaluation de ce qui se trouve dans la valeur. Dans ce cas ci l'EL va chercher un paramètre de la requete. On utilise la même technique pour, par exemple, lier des Beans entre eux
    OK OK, merci bien pour ces informations. Je mettrai ceci en œuvre dès que j'aurai fini l'étape actuelle et je cocherai la case 'Résolu' bien avidement .

    Encore Merci.

Discussions similaires

  1. Affichage de plusieurs pie chart dans une page jsf
    Par élève_ingénieur dans le forum Flash
    Réponses: 0
    Dernier message: 05/10/2011, 19h34
  2. Réponses: 13
    Dernier message: 27/09/2011, 12h08
  3. inclure une page jsf dans une autre page jsf
    Par cooltype dans le forum JSF
    Réponses: 3
    Dernier message: 17/07/2008, 11h28
  4. Impression d'une page web sur plusieurs pages papier
    Par Spidyy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/06/2006, 17h42
  5. Separer une page HTML en plusieurs parties
    Par cedre22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 01/02/2006, 14h56

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