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 :

Acceder propriété Set via EL


Sujet :

JSF Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    227
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 227
    Points : 109
    Points
    109
    Par défaut Acceder propriété Set via EL
    J'ai une propriété de type Set dans ma bean et je souhaiterai y acceder dans ma page via une balise jsf <inputText> en utilisant EL, quelqu'un a une idée?

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Un Set est une liste, or un inputText ne peut faire référence qu'à un élément. Difficile de faire le lien entre un Set et un inputText dans ce cas...

    Peux-tu expliquer un peu plus en détails ce que tu souhaites faire ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    227
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 227
    Points : 109
    Points
    109
    Par défaut
    une classe client avec une propriété contacts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Set<Personne> contacts = new HashSet();
    dans ma classe controller j'ai une propriété qui pointe vers la classe client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @ManagedBean(name = "clientController")
    @SessionScoped
    public class ClientController {
        private Client current;
    ...
    Je souhaite insérer un contact au client via page contact dont voici la déclaration.
    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
    26
    <h:form id="form_create_personne">
                    <h:panelGrid columns="2">
                        <h:outputLabel value="#{bundle.CreatePersonneLabel_nom}" for="nom" />
                        <h:inputText  styleClass="text" id="nom" value="#{clientController.selected.contacts.nom}" title="#{bundle.CreatePersonneTitle_nom}" />
    
                        <h:outputLabel value="#{bundle.CreatePersonneLabel_prenom}" for="prenom" />
                        <h:inputText styleClass="text" id="prenom" value="#{clientController.selected.contacts.prenom}" title="#{bundle.CreatePersonneTitle_prenom}" />
    
                        <h:outputLabel value="#{bundle.CreatePersonneLabel_email}" for="email" />
                        <h:inputText styleClass="text" id="email" value="#{clientController.selected.contacts.email}" title="#{bundle.CreatePersonneTitle_email}" />
    
                        <h:outputLabel value="#{bundle.CreatePersonneLabel_gsm}" for="gsm" />
                        <h:inputText styleClass="text" id="gsm" value="#{clientController.selected.contacts.gsm}" title="#{bundle.CreatePersonneTitle_gsm}" />
    
                        <h:outputLabel value="#{bundle.CreatePersonneLabel_telephone}" for="telephone" />
                        <h:inputText styleClass="text" id="telephone" value="#{clientController.selected.contacts[0].telephone}" title="#{bundle.CreatePersonneTitle_telephone}" />
    
                        <h:outputLabel value="#{bundle.CreatePersonneLabel_fax}" for="fax" />
                        <h:inputText styleClass="text" id="fax" value="#{clientController.selected.contacts.fax}" title="#{bundle.CreatePersonneTitle_fax}" />
                    </h:panelGrid>
                    <h:commandLink action="next" value="#{bundle.AddNew}"/><br/>
                    <h:commandLink action="#{clientController.create}" value="#{bundle.CreateClientSaveLink}"/><br/>
                    <h:commandLink action="#{clientController.prepareList}" value="#{bundle.CreateClientShowAllLink}" immediate="true"/><br/>
                    <h:commandLink value="#{bundle.CreateClientIndexLink}" action="/index" immediate="true"/><br/>
                </h:form>
    Ceci retourne un message d'erreur parceque l'expression en rouge renvois un Set non un objet de type contact (Personne).
    comment faire pour accéder à l'objet via EL

  4. #4
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    En fait tu ne peux pas procéder ainsi.

    Il te faut créer un contact intermédiaire dans ta classe Personne, genre tmpContact (en fournissant un getter et en pesant à toujours l'initialiser pour éviter les NPE) et ensuite, tu pourras y accéder dans tes ELs:

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:inputText value="#{clientController.selected.tmpContact.nom}" .../>

    Ensuite, dans ton bouton action de création du contact, il te suffira (après validation) d'ajouter le tmpContact dans ta liste de contact :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public String create() {
        ...
        selected.getContacts().add(selected.getTmpContact());
        ...
    }
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  5. #5
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    227
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 227
    Points : 109
    Points
    109
    Par défaut
    C'est bien à quoi je pensais, merci bcp tu me confortes dans ma solution.

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

Discussions similaires

  1. [WEB]Acceder aux données via internet
    Par nboubeur dans le forum ASP
    Réponses: 59
    Dernier message: 23/05/2007, 00h26
  2. [WEB]Acceder aux données via internet
    Par nboubeur dans le forum Access
    Réponses: 8
    Dernier message: 23/04/2007, 12h54
  3. creer une propriété accèssible via le web
    Par minette dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 01/09/2006, 16h41
  4. Réponses: 8
    Dernier message: 07/06/2006, 16h47
  5. Réponses: 7
    Dernier message: 11/01/2006, 16h55

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