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

Wicket Java Discussion :

Sélectionner un radio button par défaut


Sujet :

Wicket Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Points : 653
    Points
    653
    Par défaut Sélectionner un radio button par défaut
    Bonjour,

    J'utilise un bean pour remplir les champs de mon formulaire, or celui-ci contient plusieurs radio buttons regroupés dans un RadioChoice.

    Lorsque je veux remplir un text field, il me suffit de créer un attribut dans mon bean qui porte le même nom que l'identifiant wicket, et d'affecter à cet attribut la valeur que je veux afficher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input wicket:id="nom" type="text">
    <input wicket:id="prenom" type="text">
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class FormBean {
        private String nom;
        private String prenom;
     
        [...]
    }
    Dans le cas d'un RadioChoice, j'ai une balise span qui regroupe mes radio buttons, et que c'est la balise span qui porte l'identifiant wicket du RadioChoice ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <span valign="top" wicket:id="civilite"> 
        <input type="radio">Mme</input> 
        <input type="radio">Mlle</input>
        <input type="radio">M.</input>
    </span>
    Ma question : quel type d'attribut et quel valeur je dois définir dans mon bean pour sélectionner l'un de mes radio buttons par défaut ?

    J'espère avoir été clair. Merci pour vos réponses.

  2. #2
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    salut

    En regardant la page avec tous les composants inclus, http://wicketstuff.org/wicket14/compref/, on peut aller sur la page dédiée au RadioChoice.

    On y lit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        // Add a radio choice component that uses the model object's 'site' property to designate the
        // current selection, and that uses the SITES list for the available options.
        form.add(new RadioChoice("site", SITES));
    Autrement dit, sans avoir testé au préalable donc à prendre avec des pincettes : il te faut fournir un modèle à ton RadioChoice avec une propriété site qui définit la sélection courante.

    Si jamais je ne suis pas assez clair, n'hésite pas à me le dire : je testerai puis posterai mon code.

    ++

    EDIt: en haut à droite de chaque page du "components reference", il y a un lien "Source code". Cliquer dessus te donne accès au code source et perso cela m'a souvent aidé.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Points : 653
    Points
    653
    Par défaut
    En fait, l'astuce consiste à définir comme model du RadioChoice, le model du radion button que l'on veut voir sélectionné.

    J'ai réussi à me débrouiller comme ça, mais je voulais savoir si c'était possible en utilisant un bean.

  4. #4
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    tu fais la jonction bean/wicket à la main ou via un framework spécifique (WicketWebBeans?) ?

    De façon plus abstraite, ton bean doit pouvoir indiquer quel champ est celui sélectionné ainsi que quel(s) champ(s) participe(nt) à la liste des valeurs. Ceci dit, tu as déjà compris tout cela, du coup je me dis que je ne dois pas comprendre la question... lol

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Points : 653
    Points
    653
    Par défaut
    Je fais la jonction bean/wicket grâce à CompoundPropertyModel qui utilise la réflection.

    La réflection marche très bien lorsque les attributs à mapper sont des String dans le cas où les composants wicket sont des TextField.

    Dans mon cas, mes composants wicket sont des Radio, et là je ne sais pas quel est le type de valeur à mapper. Peut-être un Boolean, mais bon maintenant que ma bidouille marche correctement, je ne vais pas détricoter mon code, je vais rester comme je suis.

    Néanmoins, si tu as la réponse, ça m'intéresse toujours

  6. #6
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    ok, je vois mieux.

    En fait, le CompoundPropertyModel montre ici ses limites : le radioChoice nécessite en fait deux modèles, un pour la valeur sélectionnée et un pour la liste de valeurs. Or le compoundPropertyModel ne marche qu'avec l'identifiant du composant, d'où le soucis.

    Ceci dit, fournir deux modèles est chose aisée, par exemple :
    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
    	static class TestForm extends Form {
     
    		private String radioValue ;
    		private List<String> list = new ArrayList<String>();
    		public TestForm(String string) {
    			super(string);
     
    			list.add("valeur 1");
    			list.add("valeur 2");
    			radioValue = "valeur 3";
    			list.add(radioValue);
     
    			add(new FeedbackPanel("feedback"));
     
    			add(new RadioChoice<String>("radio",new PropertyModel<String>(this,"radioValue"),new PropertyModel<List<String>>(this,"list")));
    		}
    		@Override
    		protected void onSubmit() {
    			System.out.println("current value " + radioValue);
    		}
    	}
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form wicket:id="form">
    			<div wicket:id="feedback"></div>
    			 <span wicket:id="radio">
                  </span>
    			<input type="submit"/>
    		</form>
    Dans ton cas, avec le CPM, et comme indiqué là : "working with wicket models" il est possible de binder directement depuis le modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CompoundPropertyModel personModel = new CompoundPropertyModel(person);
    Form personForm = new Form("aPersonForm", personModel);
    TextField cityField = new RequiredTextField("city", personModel.bind("address.city"));
    personForm.add(cityField);
    soit au final (attention, pseudo code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    add(new public RadioChoice("id", getModel().bind("valeurSelectionnee"), getModel().bind("listeDeChoixPossibles"));
    nb : de façon générale, on adore au début le CompoundPropertyModel puis après on s'en lasse du fait de la nécessité de couplage entre le bean et les ids (contraignant en soi et, pour l'instant, non refactorisable).

Discussions similaires

  1. définir radio selectionné par défaut
    Par aspat dans le forum Struts 2
    Réponses: 2
    Dernier message: 04/06/2008, 14h02
  2. Bouton radio coché par défaut
    Par salsero1 dans le forum Struts 1
    Réponses: 13
    Dernier message: 18/11/2007, 19h21
  3. [html:radio] sélection par défaut
    Par crocodingo dans le forum Struts 1
    Réponses: 5
    Dernier message: 02/05/2007, 14h09
  4. checked le radio bouton par défaut
    Par arno49 dans le forum Struts 1
    Réponses: 2
    Dernier message: 20/09/2006, 19h23
  5. Réponses: 5
    Dernier message: 03/02/2006, 12h12

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