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 :

Wicket plusieurs FeedBackPanel


Sujet :

Wicket Java

  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 112
    Par défaut Wicket plusieurs FeedBackPanel
    Salut,

    Mon problème est plutôt simple, j'utilise Wicket et je voudrais afficher un message de retour, grâce à un feedBackPanel, à deux endroits différents (en haut et bas de page).
    Voici un bout de code wicket :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <wicket:panel>
    blablabla
      <div wicket:id="feedback"></div>
    blablabla
       <div wicket:id="feedbackBis"></div>
    </wicket:panel>
    Les deux messages s'affichent mais l'un en dessous de l'autre, malgré le blablabla entre les deux.

    J'ai essayé d'utiliser un container sans succès.

    Quelqu'un saurait-il m'expliquer comment faire ?

    Merci d'avance pour votre aide.

  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
    bonjour

    rapidement car je n'ai malheuresement guère de temps

    il y a un constructeur de FeedbackPanel qui prend un "MessageFilterer". Ce filtre a une méthode accept qui prend un FeedbackMessage.

    Pour savoir si un feedback message a déjà été affiché, appeler la méthode isRendered sur celui ci => il faut donc se créer le filtre qui va bien.

    A noter également que wicket propose par défaut un filtre pour les messages liés à un webmarkup container précis.

    Enfin, l'ordre d'ajout du feedback message à son conteneur peut jouer : si jamais un message est d'abord affiché dans un feedback panel "attrape tout - non spécifique à un conteneur" et non dans le panel dédié à ce conteneur, ajouter les feedback panel dans les derniers éléments de leur conteneur respectif (wicket parcourt l'arbre des composants pour trouver le Feedback panel qui va bien : le premier qui accept un message l'affiche une première fois).

    Disclaimer : pseudo code de partout

    si besoin, je devrai pouvoir donner plus d'élements ce soir/ce we

    ++

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 112
    Par défaut
    merci des infos,

    je ne pense pas que l'utilisation de filtres soit nécessaire dans mon cas. Je cherche juste à afficher 2 fois le même feedback !

    J'ai essayé d'ajouter des conteneurs spécifiques pour chacun de mes fbp, d'en ajouter un seul, de les positionner à différents endroits, de les appeler à différents endroits....les fbp s'affichent toujours l'un juste après l'autre

  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
    en effet, c'est bien différent, erf, ça m'apprendre à lire rapidement

    pour ton problème, euh, il est tout simplement très étrange

    peux tu poster le code java et wicket stp ?

    je suspecte également que ton code exécuté soit avec une autre version du fichier html: peux tu faire une erreur dans le code html (genre taper wicketid au lieu de wicket:id) pour être sûr que ce soit le bon fichier qui est pris en compte ? Et inversement: changer un id dans le code java.

  5. #5
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 112
    Par défaut
    après un peu de sélection dans le code (application JEE ) voila le java impliqué
    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
    //mon 1er feedback
    FeedbackPanel feedback = new FeedbackPanel("feedback");
    feedback.setOutputMarkupId(true);
    add(feedback);
    //le conteneur qui ne change pas grand chose !
    feedbackPanelContainer = new WebMarkupContainer("feedbackPanelContainer");
    add(feedbackPanelContainer);
    feedbackPanelContainer.add(feedback);
     
    //mon second feedback
    FeedbackPanel feedbackBis = new FeedbackPanel("feedbackBis");
    feedbackBis.setOutputMarkupId(true);
    add(feedbackBis);
    //idem
    feedbackBisPanelContainer = new WebMarkupContainer("feedbackBisPanelContainer");
    add(feedbackBisPanelContainer);
    feedbackBisPanelContainer.add(feedbackBis);
     
    if(true) myClass.this.feedbackPanelContainer.info("true");
    else myClass.this.feedbackPanelContainer.info("false");
    voici le code wicket, pareil les conteneur sont indiqués mais le résultat est le même sans eux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <wicket:panel>
    <div wicket:id="feedbackPanelContainer">
         <div wicket:id="feedback"></div>
    </div> 
    <div class="form">
         <form wicket:id="form"></form>
    </div>
    <div wicket:id="feedbackBisPanelContainer">
         <div wicket:id="feedbackBis"></div>
    </div>
    </wicket:panel>
    Et malheureusement ce n'est pas une erreur de fichier html, l'appel se fait sur la bonne page !

  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
    re

    ton code est pas tip top, les FeedbackPanel sont ajoutés au conteneur courant et au WebMarkupContainer.

    ceci dit, en m'en inspirant, voici ce que j'ai fait :
    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
     
    public class TestPage extends WebPage {
     
    	public TestPage() {
     
    		FeedbackContainer feedbackContainer = new FeedbackContainer(
    				"feedbackContainer");
    		add(feedbackContainer);
    		feedbackContainer.info("bar");
    	}
     
    	static class FeedbackContainer extends Panel {
     
    		public FeedbackContainer(String id) {
    			super(id);
    			FeedbackPanel feedback = new FeedbackPanel("feedback");
    			add(feedback);
    			FeedbackPanel feedbackBis = new FeedbackPanel("feedbackBis");
    			add(feedbackBis);
    		}
    	}
    }
    TestPage.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <html>
        <body>
            <wicket:container wicket:id="feedbackContainer">
            </wicket:container>
        </body>
    </html>
    et pour le panel
    TestPage$FeedbackContainer.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <wicket:panel>
    	avant
        <div wicket:id="feedback">
        </div>
        au milieu
        <div wicket:id="feedbackBis">
        </div>
    	après
    </wicket:panel>
    en affichage, j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    avant
     
        * bar
     
    au milieu
     
        * bar
     
    après
    est ce différent de ce que tu veux/obtiens ?

    ++
    joseph

  7. #7
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 112
    Par défaut
    Etant donné qu'il s'agit d'une appli JEE, je ne peux pas modifier n'importe quoi. Mais j'ai tenté de suivre ton idée d'un conteneur pour le formulaire et les 2 feedback...en vain !!
    Quoique je fasse, les 2 feedback s'affichent l'un en dessous de l'autre.
    Que je fasse dans ma TestPage.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    feedbackContainer.add(feedback);
    feedbackContainer.add(form);
    feedbackContainer.add(feedbackBis);
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    feedbackContainer.add(feedbackBis);
    feedbackContainer.add(form);
    feedbackContainer.add(feedback);
    les 2 feedback sont collés. La seule différence est que si je commence par appeler le feedbackBis, les 2 feedback s'affichent après le formulaire.

    Bien évidement avec toujours la même wicket page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <wicket:panel>
    <div wicket:id="feedbackPanelContainer">
         <div wicket:id="feedback"></div>
         <form wicket:id="form"></form>
         <div wicket:id="feedbackBis"></div>
    </div>
    </wicket:panel>
    Finalement je me demande si ce que je veux faire est réellement possible

  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
    salut

    je regarde ce soir, avec ton bout de code plus concis.

    ceci dit, sur le fond, je n'ai jamais eu de souci d'ordre avec Wicket: l'ordre affiché est celui de l'html, point barre.

    plus de détails ce soir

    ++

  9. #9
    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

    bon, en virant le feedback container (j'avais la flemme ), et avec:
    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
     
    public class TestPage extends WebPage {
     
    	public TestPage() {
     
    		FeedbackContainer feedbackContainer = new FeedbackContainer(
    				"feedbackContainer");
    		add(feedbackContainer);
    		feedbackContainer.info("bip");
    	}
     
    	static class FeedbackContainer extends Panel {
     
    		public FeedbackContainer(String id) {
    			super(id);
    			FeedbackPanel feedback = new FeedbackPanel("feedback");
    			add(feedback);
    			add(new Form("form"));
    			FeedbackPanel feedbackBis = new FeedbackPanel("feedbackBis");
    			add(feedbackBis);
    		}
    	}
    }
    TestPage.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <html>
        <body>
            <wicket:container wicket:id="feedbackContainer">
            </wicket:container>
        </body>
    </html>
    TestPage$FeedbackContainer.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <wicket:panel>
            <div wicket:id="feedback">
            </div>
    		foo
            <form wicket:id="form">
            </form>
    		bar
            <div wicket:id="feedbackBis">
            </div>
    </wicket:panel>
    j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
     
        * bip
     
    foo
    bar
     
        * bip
    soit exactement le résultat attendu à mon sens. Est ce aussi ce que tu obtiens ? Est ce que tu veux ?

    concernant les lignes de code fournies, elles ne sont malheureusement pas suffisantes pour reproduire exactement la problématique: avoir le tout sur une page comme je le fais, avec un code qu'il suffit de copier/coller, facilite grandement la chose. Surtout qu'en général cela permet de trouver soi même l'erreur...

    ++

  10. #10
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 112
    Par défaut
    Bon déjà merci de m'aider.

    Citation Envoyé par joseph_p Voir le message
    ceci dit, sur le fond, je n'ai jamais eu de souci d'ordre avec Wicket: l'ordre affiché est celui de l'html, point barre.
    C'est ce que je pensais avant d'avoir ce problème à résoudre.

    Bon autrement, les joies du manque de communication en entreprise font que le problème ne se pose plus !!
    Cependant je pense que ton code fonctionne, et que mon erreur venait du fait que je n'utilisait pas ma propre class FeedbackContainer.
    Je ne pouvais pas ajouter tout les éléments directement dans un contructeur! Donc je passais par un WebMarkupContainer auquel j'ajoutais chaque élément au fur et à mesure. Je pense que l'erreur vient de là!

    Merci encore !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/10/2009, 15h58
  2. comment gerer plusieurs connexions client/serveur
    Par naili dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/08/2002, 16h58
  3. Plusieurs scenes
    Par logramme dans le forum DirectX
    Réponses: 2
    Dernier message: 11/08/2002, 14h02
  4. Génerer automatiquement plusieurs fichier .doc
    Par brunovitch dans le forum QuickReport
    Réponses: 3
    Dernier message: 09/07/2002, 08h19
  5. Shortcut avec plusieurs touches
    Par scorpiwolf dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/07/2002, 15h57

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