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

Langage Java Discussion :

Parcours d'un bean sans références directes


Sujet :

Langage Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2006
    Messages : 32
    Par défaut Parcours d'un bean sans références directes
    Bonjour,

    Je souhaiterais afficher le contenu d'un bean à l'écran et ceci sans faire de références directe à ses propriétés qui sont succeptibles d'évoluer.

    Dois je partir sur de l'introspection (si vous avez des liens efficace je suis prenneur ) où sur un for collection ? (qui m'obligerais à recenser les dites propriétés dans un niveau d'abstraction supérieur)

    Pour illustrer mon but voici un exemple :

    Le bean
    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
    19
    20
    21
    22
    23
    24
    25
    class PropertiesManager {
     
    	private String couleurYeux = "Couleur des yeux : ";
    	private String poids = "Poids : ";
    	private String taille = "Taille : ";
     
    	public PropertiesManager(String couleurYeux, String poids, String taille ){
    		this.couleurYeux += couleurYeux;
    		this.poids += poids;
    		this.taille += taille;
    	}
     
    	public String getCouleurYeux() {
    		return couleurYeux;
    	}
     
    	public String getPoids() {
    		return poids;
    	}
     
    	public String getTaille() {
    		return taille;
    	}
     
    }
    L'afficheur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class AfficheManager{
     
    	public static void main(String... args){
    		PropertiesManager propMan = new PropertiesManager("marrons", "60", "1.70");
     
    	}
     
    	public void afficherAnonymousBean(PropertiesManager propMan){
    		// Faire le code générique qui permettrait l'affichage de ce bean sans référence à ses propriétés
    	}
    }
    L'output doit être
    Couleur des yeux : marrons
    Poids : 60
    Taille : 1.70

    Merci d'avance pour vos conseils

    EDIT : je viens de tomber sur ce post qui pose la même problématique
    http://www.developpez.net/forums/d62...nstance-objet/

    Mais la solution préconisée par le modératuer me conviens à moitié (je suis un gros lourd je sais). Ainsi, si l'on utilise une liste stockant toutes les propriétés du bean le display deviens trivial pour la classe afficheur mais plus long à générer pour le créateur du bean (sur une classe à deux propriétés ça va mais pour un truc plus gros c'est lourd).

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Quelque chose comme cela :
    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 static void afficherAnonymousBean(final Object bean) throws IntrospectionException {
    		final BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass());
    		try {
    			for (PropertyDescriptor descriptor : beanInfo.getPropertyDescriptors()) {
    				// On n'affiche pas la propriété "class" hérité de object
    				if ("class".equals(descriptor.getName())) continue;
     
    				Method getter = descriptor.getReadMethod();
    				if (getter!=null) {
    					System.out.println(getter.invoke(bean));
    				}
    			}
    		} catch (Exception e) {
    			IntrospectionException ie = new IntrospectionException("Introspection error");
    			ie.initCause(e);
    			throw ie;
    		}
    	}
    a++

    PS : Par contre ton bean est bizarre puisqu'il mélange valeur et libellé

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2006
    Messages : 32
    Par défaut
    Merci milles fois \o/

    Je vais utiliser ta solution pour automatiser un affichage sans plus jamais me soucier de celui-ci (je hais les interfaces).

    Mon exemple bizarre j'avoue. Je l'ai créé sur le pouce en dehors du projet initial. Le but est d'afficher un bean recensant des propriétés utiles pour l'utilisateur. Il me fallait donc la valeur et le titre du champ le tout sans passer par une liste genre (String)Key et valeur associée.

    Il reste un peu de boulot sur cette partie mais je vais me débrouiller seul à présent.

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Ceci affichera le nom de l'attribut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(descriptor.getName() + " : " + getter.invoke(bean));
    a++

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

Discussions similaires

  1. graphiques sans lien direct avec tables/requetes
    Par samtheh dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/07/2007, 15h45
  2. [VBA-E][Débutant] Autofill sans référence fixe
    Par Alqualonde dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/03/2007, 10h06
  3. Réponses: 3
    Dernier message: 31/10/2006, 16h22
  4. Inclusion de sous-rapport sans référence externe
    Par le--handballeur dans le forum iReport
    Réponses: 6
    Dernier message: 02/08/2006, 18h26
  5. href sans référence
    Par Daeron dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 10/11/2004, 11h02

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