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 :

Valeur par défaut d'un DropDownChoice


Sujet :

Wicket Java

  1. #1
    Membre averti Avatar de xanaxilovsky
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Par défaut Valeur par défaut d'un DropDownChoice
    Bonjour,

    Je voudrai donner une valeur par défaut à un liste déroulante. J'ai trouvé des exemples qui changent le getDisplayValue() de IChoiceRenderer() mais le problème c'est que la méthode ne convient pas à mon cas.

    J'ai deux DropDownChoice: statusChoice (contenant une liste d'action) et assignedToChoice (contenant une liste des personnes pouvant faire cette action).
    Actuellement, les deux DropDownChoice sont vides au chargement de la page. Si on change la valeur de statusChoice, on charge la liste des personnes correspondant à cette valeur dans assignedToChoice.

    Mon objectif c'est de donner une valeur par defaut à statusChoice (qui est "Suite-Traitements") et aussi une valeur par defaut à assignedToChoice (c'est la dernière personne à qui on a assigné un ticket ou une action).

    Voici quelques codes de la classe
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    final DropDownChoice assignedToChoice = new DropDownChoice("assignedTo", emptyList, new IChoiceRenderer() {
                    public Object getDisplayValue(Object o) {
                        return ((User) o).getName();
                    }
                    public String getIdValue(Object o, int i) {
                        return ((User) o).getId() + "";
                    }
                });
    ...
     statusChoice = new IndicatingDropDownChoice("status", states, new IChoiceRenderer() {
                    public Object getDisplayValue(Object o) {
                        return statesMap.get(o);
                    }
                    public String getIdValue(Object o, int i) {
                        return o.toString();
                    }
                });
                statusChoice.setNullValid(true);
                statusChoice.add(new ErrorHighlighter());
                statusChoice.add(new AjaxFormComponentUpdatingBehavior("onChange") {
                    protected void onUpdate(AjaxRequestTarget target) {
                        Integer selectedStatus = (Integer) getFormComponent().getConvertedInput();
                        if (selectedStatus == null) {
                            List listeVide = new ArrayList();
                            assignedToChoice.setChoices(listeVide);
                            assignedToChoice.setVisible(true);
                            group.setVisible(false);
                            //System.out.println(assignedToChoice.getInput());
                            //hide.setVisible(true);
                        } else {
                            List<User> assignable = UserUtils.filterUsersAbleToTransitionFrom(userSpaceRoles, space, selectedStatus);
                            List<Direction> directions = new ArrayList();                        
                            for(User usr : assignable){                    
                                Direction temp = getJtrac().loadDirection(usr.getDirection().getId());            
                                usr.setDirection(temp);                           
                                if((!directions.contains(usr.getDirection()))){
                                    directions.add(temp);
                                    //System.out.println("\n\nireto lets no itany an*/*/*//\n\n");
                                }
                            }                                                
                            listView2.setList(directions);
                            listView2.setAssignable(assignable);
                            listView2.setVisible(true);
                            group.setAssignable(assignable);
                            group.setVisible(true);
                            assignedToChoice.setChoices(assignable);                        
                            assignedToChoice.setVisible(true);
                            //hide.setVisible(false);
                        }
                        target.addComponent(border);                    
                    }
                });
    Merci d'avance pour vos réponses.

  2. #2
    Membre émérite

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    bonsoir

    cette discussion peut elle aider: DropDownChoice default value ? Je crains toutefois qu'elle ne colle pas au cas d'utilisation présent.

    L'autre possibilité que je vois est, tout simplement, de fournir un modèle qui soit initialisé à la bonne valeur. Y a t il un problème avec cette approche ?

    Par un exemple quelque chose comme (pseudo code):
    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
     
     
    IModel<User> userEditModel;
     
    onBeforeRender(){
       if(!hasBeenRendered()){
          userEditModel = new Model<User>(defaultUser) 
        add(new DropDownChoice("assignedTo", userEditModel, emptyList, new IChoiceRenderer<User>() {
                    public Object getDisplayValue(User o) {
                        return o.getName();
                    }
                    public String getIdValue(User o, int i) {
                        return o.getId() + "";
                    }
                });
     
       }
    }
    onSubmit(){
       userDao.setUser(userEditModel.getObject());
    }

  3. #3
    Membre averti Avatar de xanaxilovsky
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Par défaut
    J'ai vu l'autre topic et ca marche maintenant mais à moitié. J'arrive à mettre les valeurs par défaut mais quand j'envoie le formulaire, les valeurs dans les deux DropDownChoice ne sont pas prises.
    Je suis entrain de chercher ce qui cloche

  4. #4
    Membre émérite

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    les valeurs données par défaut sont elles présentes parmi les choix disponibles ?

    A défaut, je pense que passer par des modèles devraient résoudre le tout. Je peux fournir un exemple si besoin.

    ++

  5. #5
    Membre averti Avatar de xanaxilovsky
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Par défaut
    Re

    On dirait que les DropDownChoice retournent null. Comme je débute encore avec wicket, je refuserai pas les exemples. Ca fait maintenant 3 jours que je plante sur ce problème.

    Edit : Pour être précis, je suis entrain de faire une amélioration de Jtrac et suivre toutes les classes n'est pas facile facile.

    Bien à toi

  6. #6
    Membre émérite

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    je suis pas mal occupé en ce moment, mais je vais tenter de trouver le temps ce soir pour faire une petite démo

  7. #7
    Membre averti Avatar de xanaxilovsky
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Par défaut
    Citation Envoyé par joseph_p Voir le message
    je suis pas mal occupé en ce moment, mais je vais tenter de trouver le temps ce soir pour faire une petite démo
    Ok, merci d'avance

    Edit: La liste dans assignedToChoice doit aussi correspondre à un bouton radio selectionné parmis un groupe. Donc, les trois champs doivent bien correspondre. Ca devient de plus en plus compliqué

  8. #8
    Membre émérite

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    re xanaxilovsky

    bon, je n'ai fait qu'une démo du principe proposé, en passant par un modèle. Ceci dit, c'est là toute la puissance de wicket: avec les modèles il est aisé de faire des choses complexes. Si jamais l'exemple n'est pas clair, ne pas hésiter à poser des questions !

    TestPage.java
    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
    27
    28
    29
    30
    31
    32
     
     
    public class TestPage extends WebPage {
     
    	private final IModel<String> model;
    	private IModel<List<? extends String>> choicesModel;
     
    	public TestPage() {
    		model = Model.of("preDefinedValue");
    		choicesModel = Model.ofList(Arrays.asList("oneValue", "twoValue",
    				"preDefinedValue", "other"));
    	}
     
    	@Override
    	protected void onBeforeRender() {
    		if (!hasBeenRendered()) {
    			Form form = new Form("form") {
    				@Override
    				protected void onSubmit() {
    					// do something meaningful with the drop down value
    					info("model content: '" + model.getObject() + "'.");
    				}
    			};
    			add(form);
    			DropDownChoice<String> predefinedDropDown = new DropDownChoice<String>(
    					"dropDown", model, choicesModel);
    			form.add(predefinedDropDown);
    			add(new FeedbackPanel("feedback"));
    		}
    		super.onBeforeRender();
    	}
    }
    TestPage.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <html>
        <body>
        	<form wicket:id="form">
        		<select wicket:id="dropDown"></select><br/>
    			<input type="submit" value="Go"/>
        	</form>
    		<div wicket:id="feedback"></div>
        </body>
    </html>
    Le principe est de se servir de modèles pour passer l'état désiré. A chaque affichage (render), les composants sont alors mise à jour de façon concordantes. Dans le cas d'une utilisation de l'Ajax, ne pas oublier de réafficher tous les composants impactés (ou un conteneur commun).

    pour les modèles, je pense que la bible est par là: Exploration des modèles de Wicket

    bon courage

    ++

  9. #9
    Membre averti Avatar de xanaxilovsky
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Par défaut
    Bonjour,

    Enfin, c'est résolu. Merci pour les exemples ? Les modèles sont assez difficiles à prendre en main, mais je comprends de mieux en mieux.

    Encore merci

  10. #10
    Membre émérite

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Citation Envoyé par xanaxilovsky Voir le message
    Bonjour,

    Enfin, c'est résolu. Merci pour les exemples ? Les modèles sont assez difficiles à prendre en main, mais je comprends de mieux en mieux.

    Encore merci
    de rien

    les modèles sont vraiment au coeur de ce qui fait de wicket un framework si souple et "scalable". par contre, à l'inverse, ils sont durs à prendre en main, clairement.

    si jamais il y a d'autres questions, ne pas hésiter

    EDIT: dans mes réponses je tente de trouver un juste milieu entre "donner la réponse" et "donner les moyens de trouver la réponse", j'espère que cela ne pose pas de souci.

  11. #11
    Membre averti Avatar de xanaxilovsky
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Par défaut
    Citation Envoyé par joseph_p Voir le message
    dans mes réponses je tente de trouver un juste milieu entre "donner la réponse" et "donner les moyens de trouver la réponse", j'espère que cela ne pose pas de souci.
    J'ai pas mal galerer mais ca va!

  12. #12
    Membre émérite

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Citation Envoyé par xanaxilovsky Voir le message
    J'ai pas mal galerer mais ca va!
    ne pas hésiter à me dire si je mets la barre trop haut une prochaine fois

    ++

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/07/2004, 17h46
  2. Valeur par défaut dun DBLookupcombobox
    Par lol_adele dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/05/2004, 09h08
  3. Valeur par défaut dans une table objet
    Par Ricky81 dans le forum Oracle
    Réponses: 12
    Dernier message: 18/03/2004, 11h52
  4. Réponses: 2
    Dernier message: 18/10/2003, 14h42
  5. Unique + valeur par défaut
    Par ketalie dans le forum Outils
    Réponses: 4
    Dernier message: 02/07/2003, 15h29

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