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 :

récupérer un objet depuis un <h:selectManyCheckbox>


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Par défaut récupérer un objet depuis un <h:selectManyCheckbox>
    Bonjour,

    Peut-on récupérer un objet depuis un <h:selectManyCheckbox> ?

    Voici le code de ma page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <h:form id="repasConfirmValid">
     
     				<h:selectManyCheckbox id="validRepas" value="#{restoBean.selectedUsa}" layout="pageDirection">
    					<f:selectItems value="#{restoBean.listUsager}" var="usa" itemValue="#{usa}" itemLabel="#{usa.nom}  #{usa.prenom}"/>
    				</h:selectManyCheckbox>
     
    				<div align="center"><p:commandButton value="#{monLabel.valider}" update="panelRepasValid,display,msgs" action="#{restoBean.confirmRepasValid}"/></div>
     
    			</h:form>
    et un test dans ma méthode confirmRepasValid de mon managedBean:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(int t=0;t<selectedUsa.size(); t++){
    	System.out.println("NomUsager:"+selectedUsa.get(t).getNom());
    }
    selectedUsa est de type List<Usager>.

    la console me retourne:
    Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to viacham.bo.Usager

    merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Par défaut
    Salut,

    Dit moi restoBean.listUsager est de quel type ?

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Par défaut
    listUsager est aussi de type List<Usager>

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Par défaut
    Hum, moi je n'utilise pas ce composant de la même façon :

    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
     
    public class RestoBean {
     
        private List<Usager> selectUsa;
        private List<SelectItem> values;
     
        public RestoBean() {
            Usager[] usagers = {new Usager("Dupond", "Paul"), new Usager("TestNom", "TestPrenom")};
            values = new ArrayList<SelectItem>();
            for(Usager usager : usagers){
                values.add(new SelectItem(usager, usager.getNom() + " " + usager.getPrenom()));
            }
        }
     
        public void confirmRepasValid(){
            for (Usager usager : selectUsa){
                System.out.println("NomUsager : " + usager.getNom());
            }
        }
    SelectItem est une classe de ce package javax.faces.model.SelectItem

    Page xhtml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <h:form id="repasConfirmValid">
        <h:selectManyCheckbox value="#{restoBean.selectUsa}">
            <f:selectItems value="#{restoBean.values}"/>
        </h:selectManyCheckbox>
        <div align="center"><p:commandButton value="#{monLabel.valider}" update="panelRepasValid,display,msgs" action="#{restoBean.confirmRepasValid}"/></div>
    </h:form>
    Voila pour moi ça marche parfaitement, j'avoue que je n'ai jamais testé en utilisant t'as méthode donc la dessus je ne peux t'aider.

    J'espère que ça va t'aider quand un peu .

    EDIT : J'ai oublié de te dire que les paramètres du constructeur de SelectItem sont SelectItem(Object value, String label).

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Par défaut
    Merci pour ces infos, malheureusement même avec ta méthode, j'obtiens la même erreur.
    Problème de conversion du type String vers mon Objet Usager
    Je me suis renseigné du coté de l'attribut "converter" mais il faut construire son propre convertisseur.

    Je continue à chercher, si quelqu'un à une idée !?

    Merci

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Par défaut
    Effectivement je viens de tester ça ne marche pas, du coup l'idée du convertisseur n'est pas mauvaise. Mais ce qui est bizarre c'est que quand tu fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public RestoBean() {
        Usager[] usagers = {new Usager("Dupond", "Paul"), new Usager("TestNom", "TestPrenom")};
        values = new ArrayList<SelectItem>();
        selectUsa = new ArrayList<Usager>();
        selectUsa.add(usagers[0]);
        for (Usager usager : usagers) {
            values.add(new SelectItem(usager, usager.getNom() + " " + usager.getPrenom()));
        }
    }
    Dupond et Paul seront sélectionné. La je suis comme toi je ne vois comment faire.

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

Discussions similaires

  1. [Doctrine] récupérer les objets trouvés depuis actions.class
    Par jfsenechal dans le forum ORM
    Réponses: 7
    Dernier message: 13/01/2011, 10h15
  2. [MVC] Récupérer un resource handler vers un objet depuis un formulaire
    Par Momo-Arusten dans le forum Spring Web
    Réponses: 0
    Dernier message: 25/02/2009, 12h05
  3. Récupérer un objet depuis un Datatable
    Par tomy29 dans le forum JSF
    Réponses: 5
    Dernier message: 12/08/2008, 17h29
  4. Réponses: 8
    Dernier message: 20/06/2008, 14h04
  5. Récupérer un objet depuis Internet
    Par hemipsy dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 04/01/2007, 09h45

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