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 :

Redirection vers un Panel


Sujet :

Wicket Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2012
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Redirection vers un Panel
    Bonjour à tous !
    étant en novice dans le développement web je rencontre un petit problème au niveau du framework wicket.
    En effet je voudrais rediriger une page vers un contenu Panel. je m'explique :

    j'ai un lien Ajax et je voudrais que quand je clique sur le lien, cela change le contenu initial vers le nouveau ! donc TOUT reste identique sauf le contenu. le nouveau étant une classe qui hérite de "Panel".

    voici un peu les quelques codes que j'ai ecrit. si quelqu'un peut m'aider ca serait avec grand plaisir que j'accepte . Merci d'avance

    Ancienne Page .html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     [....]
     
    <a href="#" wicket:id="numCmdeLink">
    													<span class="" wicket:id="numCmde">Ref Commande</span>										</a>
     
    [...]
    Ancienne Page .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
     
     
    [...]
     
    IndicatingAjaxLink<Void> detailCommandeLink = new IndicatingAjaxLink<Void>("numCmdeLink") {
     
    					private static final long serialVersionUID = 1L;
     
     
    					@Override
    					public void onClick(AjaxRequestTarget target) {
    						//open page for detail commande Page 
    // je ne sais pas quoi ecrire ici :(... 
    // je suis passé par setResponsePage mais cela me redirige vers une nouvelle
    // page ce que je ne veux pas. je voudrais juste que le contenu change...
     
     
    					}
    				};
     
    [...]

    Nouvelle Page .html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <html xmlns:wicket="http://wicket.apache.org/">
    <body>
    <wicket:panel>
    	<div class="spacer" wicket:id="dynamicPanel">
    		<div class="feedback" wicket:id="feedbackCas"></div>
    	</div>
    </wicket:panel>
    </body>
    </html>
    Nouvelle Page .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
    public class CasPanel extends Panel { 
     
    public CasPanel(final String id) {
    		super(id);
    		createComponents();
    	}
     
    	/**
             * create the home page with search/result components
             */
    	protected void createComponents() {
     
    		// panel de feedback
    		final HiddenFeedbackPanel feedback = new HiddenFeedbackPanel("feedbackCas", true);
    		feedback.setOutputMarkupId(true);
    		add(feedback);
    }
    }

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    En fait tu veux changer le panel.
    Ce n'est pas une redirection. Le concept de redirection ne s'applique que pour les pages.

    Dans la méthode
    public void onClick(AjaxRequestTarget target)
    tu crées le nouveau panel et tu l'ajoutes à la target.

    Tu as 1 exemple très détaillé sur la page :
    http://yeswicket.com/index.php?post/...Wicket-en-Ajax

    Tu as aussi plein d'exemples sur la page
    http://www.wicket-library.com/wicket-examples/ajax




    François
    Dernière modification par Invité ; 28/05/2013 à 10h15.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2012
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Oui c'est vrai je me suis mal exprimer. le premier exemple peut bien m'aider mais il y a une chose que je n'arrive pas à comprendre. le moment de remplacer l'ancien Panel par le nouveau.
    Dans la méthode onClick du lien Ajax, nous devons créer une instance du panel AddContactPanel en utilisant le même identifiant Wicket que le composant dynamicPanel.
    est ce que cela veut dire que dans le fichier HTML courant et celui que je dois charger doivent avoir un composant wicket avec le même identifiant? à savoir "dynamicPanel"??

  4. #4
    Invité
    Invité(e)
    Par défaut
    Oui le panel nouveau qui doit remplacer l'ancien doit avoir le même identifiant.

    François

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2012
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    bon y a toujours l'erreur. voici le nouveau code que j'ai mis.

    mon HTML Courant et .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
     
    private WebMarkupContainer dynamic;
     
                 dynamic = new WebMarkupContainer("caspanel");
                 dynamic.setOutputMarkupId(true);
                 add(dynamic);
     
    // =====================================================
                               // Button  ND/Number of CommandBean 
                               // ===================================================== 
     
                               IndicatingAjaxLink<Void> ndCommandLink = new IndicatingAjaxLink<Void>("ndCmdeLink") {
     
                                      private static final long serialVersionUID = 1L;
     
                                      @Override
                                      public void onClick(AjaxRequestTarget target) {
                                            // open page for detail commande Page 
     
                                            replaceEmptyPanel(target, new CasPanel("caspanel"));
                                      }
     
                                      private void replaceEmptyPanel(AjaxRequestTarget target,
                                                   Panel newPanel) {
                                            dynamic.replaceWith(newPanel);
                                            dynamic = newPanel;
                                            target.addComponent(newPanel);
     
                                      }
     
                               };

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <a href="#" wicket:id="numCmdeLink">
           <span class="" wicket:id="numCmde">Ref Commande</span>                                                                                                    
    </a>
     
    <div wicket:id="caspanel"></div>
    Nouveau .html et .java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <html xmlns:wicket="http://wicket.apache.org/">
    <body>
    <wicket:panel>
           <div class="spacer" wicket:id="ongletFiltrage">
                 <div class="feedback" wicket:id="feedbackCas"></div>
                 <div wicket:id="detailsBlockPanel" class="block blockLarge"></div>
    <!--         <div wicket:id="formulaireBlockPanel" class="block blockLarge"></div> -->
    <!--         <div wicket:id="consignesBlockPanel" class="block blockLarge"></div> -->
    </div>
     
    </wicket:panel>
    </body>
    </html>
    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
    public class CasPanel extends TabPanel {
     
    	private static final long serialVersionUID = 3733297937336451612L;
     
    	private WebMarkupContainer dynamic;
     
    	public CasPanel(String id) {
    		super(id);
    		createComponents();
    	}
     
    	private void createComponents() {
    		// TODO Auto-generated method stub
    		dynamic = new WebMarkupContainer("caspanel");
    		dynamic.setOutputMarkupId(true);
    		add(dynamic);
    		// panel de feedback
    		final HiddenFeedbackPanel feedback = new HiddenFeedbackPanel("feedbackCas", true);
    		feedback.setOutputMarkupId(true);
    		dynamic.add(feedback);
     
    		dynamic.add(new Label ("detailsBlockPanel"," tototototot"));
    	}
     
     
     
    }
    Erreur sur la console eclipse

    ERROR RequestCycle(1521) - cannot update component that does not have setOutputMarkupId property set to true. Component: [MarkupContainer [Component id = caspanel]]
    java.lang.IllegalArgumentException: cannot update component that does not have setOutputMarkupId property set to true. Component: [MarkupContainer [Component id = caspanel]]
    at org.apache.wicket.ajax.AjaxRequestTarget.addComponent(AjaxRequestTarget.java:346)
    at com.page.filtrage.FiltragePage$CategorieListView$CommandListView$1.replaceEmptyPanel(FiltragePage.java:328)
    at com..FiltragePage$CategorieListView$CommandListView$1.onClick(FiltragePage.java:321)
    at org.apache.wicket.ajax.markup.html.AjaxLink$1.onEvent(AjaxLink.java:68)
    at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:177)
    at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:286)
    at org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:119)
    at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
    at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1250)
    at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
    at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
    at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
    at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:479)
    at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:312)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at clara.security.filter.SecurityFilter.doFilter(SecurityFilter.java:259)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at .filter.IpFilter.doFilter(IpFilter.java:70)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.ow2.jonas.web.tomcat6.CheckOpenResourcesValve.invoke(CheckOpenResourcesValve.java:73)
    at org.ow2.jonas.web.tomcat6.tx.TransactionValve.invoke(TransactionValve.java:90)
    at org.ow2.jonas.web.tomcat6.ResetAuthenticationValve.invoke(ResetAuthenticationValve.java:95)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.ow2.jonas.web.tomcat6.versioning.VersioningValve.invoke(VersioningValve.java:75)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:662)

  6. #6
    Invité
    Invité(e)
    Par défaut
    dans le lien ndCommandLink il y a un problème dans la création du panel. replaceEmptyPanel(target, new CasPanel("caspanel"));

    Il faut que le panel CasPanel appelle la méthode setOutputMarkupId( true )
    pour qu'Ajax retrouve l'id du composant lors de l'update.

    Panel panel = new CasPanel("caspanel");
    panel.setOutputMarkupId(true);
    replaceEmptyPanel(target, panel);


    François

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2012
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Impeccable merci beaucoup pour ton aide...maintenant plus de probleme

    à bientot peut etre

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/09/2005, 10h20
  2. Faire Response.redirect vers un signet d'une page
    Par requiemforadream dans le forum ASP
    Réponses: 3
    Dernier message: 22/04/2005, 14h59
  3. [STRUTS] Redirection vers un contrôleur
    Par noah42 dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/02/2005, 09h23
  4. [PRO] redirection vers une page
    Par Mister_FX dans le forum ASP
    Réponses: 10
    Dernier message: 23/06/2004, 17h31
  5. Pb de redirection vers page principale
    Par croco83 dans le forum ASP
    Réponses: 2
    Dernier message: 06/05/2004, 14h10

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