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

Spring Web Java Discussion :

[Spring MVC] Binding radiobutton sur base d'une enum


Sujet :

Spring Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [Spring MVC] Binding radiobutton sur base d'une enum
    Bonjour,

    J'ai dans mon bean commande ('StudentFolder') un bean 'Student' qui possède une énumération pour le sexe.
    Dans mon formulaire, je veux afficher deux boutons radios pour sélectionner le sexe. Mais le binding n'à pas l'air de se faire. Surement parceque j'utilise une enumération mais je ne sais pas (encore) comment résoudre ce 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
     
    <!-- Dans mon formulaire -->
    <form:form commandName="studentfolder">
      ...
      <td>
        <!-- Je suppose que 'value' doit-être en rapport avec mon enum.. --> 
        <form:radiobutton path="student.genre" value="M" /> 
        <form:radiobutton path="student.genre" value="F" /> 
        <!--<input type="radio" name="sexe" value="m"> M /
        <input type="radio" name="sexe" value="f"> F-->
      </td>
      ...
    </form:form>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Mon énumération
    public class Student {
      public static enum Genre { Male, Female }
      ...
    }
    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
     
    // Le bean commande
    public class StudentFolder implements Serializable {
     
      private Student student = null;
     
      public Student getStudent() {
        return student;
      }
     
      public void setStudent(Student student) {
        this.student = student;
      }
     
    }
    Merci


    Par après j'aurais à faire la même chose pour depuis une 'java.util.List' ..

  2. #2
    Membre éclairé Avatar de dgouyette
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 75
    Par défaut
    Ton énumération et ton formulaire ne semblent pas être en accord

    Dans ton énumération, tu utilises

    public static enum Genre { Male, Female }

    Alors que dans ton formulaire tu fais

    <form:radiobutton path="student.genre" value="M" />

    Tu as essayé de faire une énumération du style public static enum Genre { "M", "F" }

    ?

  3. #3
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <form:radiobutton path="student.genre" value="M" />
    student.genre ici va lié la valeur selectionner par le combo box à une propriété genre du bean student. ( Donc qu'il doit y avoir un setGenre(... ) dans la classe Student ).

    Or ici, si je comprends pense que cela va récupérer une valeur dans la liste de l'enum Genre non ?
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Hikage Voir le message
    Or ici, si je comprends pense que cela va récupérer une valeur dans la liste de l'enum Genre non ?
    Heuu oui (si je comprend bien) ce que je veux c'est que cela corresponde au contenu de mon enum.. (en tout cas que je récupère un bean StudentFolder qui comprend un bean Student sur lequel setGenre(Genre g) à été invoqué avec la bonne valeur)

    Je sais bien que dans mon formulaire ça ne correspond pas avec mon enumération, c'est la raison de mon post...

    Biens ur dans ce cas ci on est pas prés de devoir rajouter un troisième genre (quoique..).

  5. #5
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Par défaut
    Il faut faire qques chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // via referenceData ou autre moyen équivalent 
    protected Map referencesData(){
     
      Map map = new HashMap();
     
      // ajout des différentes valeurs dans le model 
      map.put("genres", Genre.values());
     
      return map;
     
    }
    Dans ta jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <c:forearch items="${genres}" var="genre">
    <form:radiobutton path="tonObjetCommand.sexe" value="${genre}"/>
    </c:forearch>
    ou TonObjetCommand possède une méthode setSexe(Genre genre);

    Mais il est encore nécessaire d'ajouter un custom

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder)         throws Exception {
     
    binder.registerCustomEditor(Genre.class, new GenreEditor());
     
     
         }
    Ou GenreEditor est une classe qui étends PropertyEditor, pour traduire une String => Genre, ou le contraire Genre => String
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ok, merci. Dans mon cas un 'PropertyEditor' qui convertiras 'M' en 'Genre.Male' et 'F' en 'Genre.Female' suffiras car je ne pense pas avoir besoin de rajouter des sexes à la volée.

    Mais tu répond à ma seconde question, super. Merci beaucoup Hikage (une fois de plus, à la 100eme je te payerais un verre )

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

Discussions similaires

  1. [Spring MVC] Deux formulaires sur une même page
    Par djodjo dans le forum Spring Web
    Réponses: 1
    Dernier message: 20/10/2008, 09h52
  2. Remplir listbox sur base d'une autre listbox
    Par jujujulien dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/05/2007, 08h46
  3. Recherche d'enregistrements sur base d'une liste
    Par michel baily dans le forum SQL
    Réponses: 4
    Dernier message: 31/08/2006, 09h59
  4. [Spring MVC] Plusieurs actions sur le même formulaire
    Par aloha dans le forum Spring Web
    Réponses: 3
    Dernier message: 26/08/2006, 15h22
  5. Sortir un fichier csv sur base d une requete
    Par Freeman_80 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 12/01/2005, 11h21

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