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 :

Accéder aux annotations d'une expression EL


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 Accéder aux annotations d'une expression EL
    Bonjour,


    j'ai pas mal de propriétés dans un bean hibernate, exploité par un formulaire JSF, qui sont du même type. Pour des raisons d'économie, au lieu d'avoir 50 tables reprenant les différentes listes de valeurs possible pour les 50 champs différents et avoir du coup 50 beans hibernate du style "SelectCategorieHoraire" "SelectBatiment" "SelectNiveau" "SelectStatus", .... nous avons opté pour une liste générique "SelectEntry" avec une colonne suplémentaire "ListKey" et chaque champ pointant vers cette SelectEntry a une contrainte supplémentaire sur la clé à utiliser.

    Bref, pour le moment, le bean ressemble à ça, SelectKey état une annotation utilisant l'api bean validation que je commence à introduire. Donc on pourra, je pense, valider l'exactitude des données (c'est en cours, c'est un autre problème).
    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
     
        /**
         * @return the missionDuration
         */
        @JoinColumn(name="EMP_MISSION_DURATION")
        @ManyToOne(cascade={javax.persistence.CascadeType.MERGE},fetch=FetchType.LAZY)
        @Cascade(value={CascadeType.LOCK})
        @SelectKey("missionLength")
        public SelectEntry getMissionDuration() {
            return missionDuration;
        }
        /**
         * @return the maritalStatus
         */
        @JoinColumn(name="EMP_MARITAL_STATUS")
        @ManyToOne(cascade={javax.persistence.CascadeType.MERGE},fetch=FetchType.LAZY)
        @Cascade(value={CascadeType.LOCK})
        @SelectKey("maritalStatus")
        public SelectEntry getMaritalStatus() {
            return maritalStatus;
        }

    Maintenant le coeur du problème coté JSF. J'utilise pour le moment un composant custom pour sélectionner parmis ces listes, recevant la clé en paramètre pour n'afficher que les entrées acceptables:

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <hr:selectEntry id="duration" key="missionLength" value="#{hrSession.employee.missionDuration}"/>
    et j'aimerais bien éviter la double notation entre JSF et le Bean. Pour cela, je cherche à savoir comment mon composant, à partir de "#{hrSession.employee.missionDuration}" peut déterminer qu'il s'agit de la propriété "missionDuration" d'une instance de Employee et ainsi lire les annotations de cette propriété.

    Est-ce possible ou est-ce que je me heurte à un mur?

  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
    Bon, ben j'arrive à récupérer l'instance et le nom de la propriété via ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    javax.faces.context.FacesContext.getCurrentInstance().
    	getApplication().getExpressionFactory()
    	.createValueExpression(
    			javax.faces.context.FacesContext.getCurrentInstance().getELContext(), 
    			"#{hrSession.employee.gender}", 
        		be.rmi.intranet.rh.SelectEntry.class)
     
        		.getValueReference(
        	javax.faces.context.FacesContext
        		.getCurrentInstance().getELContext()
        	)
    Reste plus qu'à trouver comment détecter facilement les annotation sachant qu'elles peuvent être sur le getter, le setter ou le field

Discussions similaires

  1. comment accéder aux pixels d'une image
    Par young077 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 25/04/2006, 07h57
  2. Réponses: 7
    Dernier message: 30/03/2006, 10h04
  3. accéder aux colonnes d'une table différemment
    Par fab_hendrix dans le forum Langage SQL
    Réponses: 3
    Dernier message: 06/08/2005, 19h20
  4. Réponses: 4
    Dernier message: 28/03/2005, 12h37
  5. Réponses: 9
    Dernier message: 03/12/2004, 11h35

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