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 :

Ajax radio button


Sujet :

Wicket Java

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 146
    Par défaut Ajax radio button
    Salut à tous,

    Voilà j'aimerai rendre visible certains composants suiivant le bouton radio qui est coché.

    JE l'avais en javascript ça marchait bien. Probleme lorsque tu soumet le forulaire, que tu vas la page suivante et que tu reviens en arriere le bouton coché ne correspond plus a la zone affichée.

    J ai donc decide de refaire cette partie avec wicket

    j utilise un radio group


    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
     
    final TextField<String> popole= new TextField<String>("popole", new PropertyModel<String>(Bean,
                "popole"));
    formulaire.add(popole);
     
    final RadioGroup<String> pole = new RadioGroup<String>("type", new PropertyModel<String>(Bean,
                "type")) {
                /**
                 * serial
                 */
                private static final long serialVersionUID = 1L;
     
                @Override
                protected boolean wantOnSelectionChangedNotifications() {
     
                    return true;
                }
            };
            pole.add(new AjaxFormChoiceComponentUpdatingBehavior() {
     
                /**
                     * 
                     */
                private static final long serialVersionUID = 1L;
     
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            });
            pole.add(new Radio<String>("pole1", new Model<String>("pole1")));
            pole.add(new Radio<String>("pole2", new Model<String>("pole2")));
            formulaire.add(pole);
    si dans la methode protected void onUpdate(AjaxRequestTarget target)
    je mets un composant popole.setVisible(false);

    ça ne fonctionne pas je ne sais pas pourquoi

    merci pour vos conseils

    ps j ai egalement essaye avec AjaxEventBehavior mais sans succes

  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 lerab51

    je vais essayer de donner assez d'éléments pour que tu puisses faire cela par toi même, n'hésite pas à poser des questions si besoins. En ultime recours je pourrai faire une démo qui tourne, mais c'est moins instructif je pense.

    concernant l'ajax avec wicket, plusieurs éléments sont à prendre en compte :
    - dans les éléments ajax, on a souvent quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                protected void onUpdate(AjaxRequestTarget target) {
    cette target sert à définir ce qui sera réaffiché suite à l'aller/retour client serveur. Cela se fait au moyen de la méthode AjaxRequestTarget.addComponent(Component).
    -wicket doit pouvoir retrouver les éléments à réafficher dans l'html généré. En effet, par défaut, wicket ne met pas d'identifiant spécifique dans les pages générées avec les paramètres de production. Pour signaler à un composant qu'il doit afficher son identifiant dans l'html, on procède via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Component.setOutputMarkupId(final boolean output)
    ce "markup id" diffère de l'identifiant du composant en cela qu'il est versioné, grosso modo, à chaque réaffichage, son nom évoluera de identifiantN à identifiantN+1.
    - mettre setOutputMarkupId pour des composants non visibles n'aide pas trop : ils ne sont tous simplement pas présent dans l'html généré. Pour éviter les soucis, on peut passer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Component.setOutputMarkupPlaceholderTag
    cette méthode s'assure que, même si le composant lui même est invisible, un container sera là pour le représenter. Cependant, cette stratégie n'est pas toujours nécessaire, des fois on peut se contenter de ré afficher un conteneur un peu plus large, genre le formulaire. Pour cela wicket propose des méthodes qui simplifient la vie: chaque FormComponent a une méthode getForm(), permettant de redessiner le formulaire en cours (à condition que que son outputMarkupId ait été mis dans le markup, bien sûr).

    Je conseille vivement la lecture de la javadoc de ces méthodes. Pour les anglophones, il existe de nombreux articles sur le sujet, dont un vieux article de ma main, Discovering Wicket 1.3. J'avais même traduis un article en français, Ajax supportant les navigateurs sans Javascript ("Backward compatible") avec Wicket.

    au final, l'ajax wicket est simple et très puissant, bonne découverte !

    n'hésite pas si besoin
    ++
    joseph

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 146
    Par défaut
    merci beaucoup,

    en fait j ai reussi apres avoir posté hier j ai utilise setOutputMarkupPlaceholderTag

    et j ai enlevé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @Override
                protected boolean wantOnSelectionChangedNotifications() {
     
                    return true;
                }
    Merci beaucoup Joseph

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

Discussions similaires

  1. radio button
    Par Smash34 dans le forum Langage
    Réponses: 1
    Dernier message: 23/02/2006, 10h47
  2. Réponses: 3
    Dernier message: 16/12/2005, 15h35
  3. [débutante] Radio button
    Par monia dans le forum MFC
    Réponses: 1
    Dernier message: 01/07/2005, 10h15
  4. [JTree] Label + Textfield, Radio buttons, ..
    Par leup dans le forum Composants
    Réponses: 2
    Dernier message: 31/01/2005, 09h40
  5. value de radio button indéfinie (undefined)
    Par noinneh dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/12/2004, 12h25

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