Syndication : Atom 1.0  RSS 2.0
Blogs des développeurs   »   @Repository("djo")

Article complet: wicket:container et l'ajax

05/06/2009

Permalink 14:13:54, Catégories: Wicket, Récapitulatif Web, Récapitulatif, Web, 224 mots   French (FR) , djo.mos

[Java][Web] wicket:container et l'ajax

Je viens de perdre une demi heure à me casser les dents sur un truc très stupide. Je voulais donc en parler rapidement ici, peut être que ça vous épargnerait de perdre du temps dessus un de ces jours.

La version courte

Ne jamais utiliser <wicket:container> avec l'ajax !!!!

La version longue

[Suite:]

J'ai mis dans le html :

<wicket:container wicket:id=details"></wicket:container>

Côté Java, j'y avais associé un EmptyPanel (initialement) :

add(new EmptyPanel("details").setOutputMarkupId(true));

Et je voualis mettre à jour son contenu via ajax suite à un clic sur un autre élément de la page :

PersonDetailsPanel personDetailsPanel = new PersonDetailsPanel( 
    "details", new Model<Person>(p)); 
personDetailsPanel.setOutputMarkupId(true); 
addOrReplace(personDetailsPanel); 
if (target != null) { 
  target.addComponent(new PersonDetailsPanel( 
      "details", new Model<Person>(p)).setOutputMarkupId(true)); 
  
}

A l'exécution, j'obtiens un comportement bizarre : Au premier clic, ça met à jour la page html, mais les clics suivants bien que traités côté serveur ne mettent pas à jour le panel.
D'autres fois, même le premier clic ne fonctionnait pas.

Pour finir, je tiens à adresser mes remerciements les plus sincères à la console «Ajax Debug» de Wicket qui m'a permis de résoudre ce problème ! :))

Social Bookmarking:

                                     

Commentaires, Pingbacks:

Connectez-vous pour vous abonner à cet article:

Flux de commentaires pour cet article : Atom 1.0  RSS 2.0
Commentaire de: joseph_p [Membre] · http://josephonit.wordpress.com/
salut

hum, je ne suis pas trop surpris dans la mesure où tout l'intérêt d'un wicket:container est de ne pas figurer dans l'html généré...

Aussi, du coup, perso, j'aurai plutôt utilisé setOutputMarkupPlaceholderTag(true)... As tu essayé ?

++
Permalien 05/06/2009 @ 16:24
Commentaire de: djo.mos [Membre]
Plop,
Ouep, c'est pas faux.
Sinon, j'ai plutôt utilisé un div à la place du container, mais ta proposition est intéressante. Je vais tester ça :)

[edit] Ca marche pas.
Permalien 05/06/2009 @ 16:29
Commentaire de: joseph_p [Membre] · http://josephonit.wordpress.com/
j'viens de vérifier ce n'est que pour les composants qui... ont un tag lol

dsl pour la fausse piste

++
Permalien 05/06/2009 @ 16:41
Commentaire de: lunatix [Membre]
tu dois pouvoir utiliser WebMarkupContainer je crois? (zut, je me rends compte que ca fait un petit moment que j'ai plus fait de wicket, j'ai un peu perdu la main)
Permalien 06/06/2009 @ 11:11
Commentaire de: djo.mos [Membre]
@lunatix> Oui, je peux le faire, mais c'est pas ça le problème : on passe par le WebMarkupContainer généralement quand on veut refraichir une balise qui n'a pas de composant Wicket associé via Ajax.

Là c'est plutot l'inverse : je voualis rafraichir un composant qui n'était pas associé à une balise :aie:
Permalien 06/06/2009 @ 14:24
Commentaire de: joseph_p [Membre] · http://josephonit.wordpress.com/
petite question : quelle solution as tu retenu finalement ?

s'il s'agit d'une listview, perso, j'ai tendance à la mettre dans un container quelconque, genre un webmarkupcontainer, histoire de mettre ce composant dans ma target.
Permalien 06/06/2009 @ 15:36
Commentaire de: djo.mos [Membre]
@zedros : j'ai utilisé un div à la place de et non, ce n'est pas un composant liste que je veux rafraichir via ajax.
Le problème n'est pas que je n'ai pas un composant Wicket à passer à l'AjaxRequestTarget, c'st plutot dans le html où Wicket ne trouve pas la balise où insérer le contenu du composant.
Permalien 06/06/2009 @ 17:32
Commentaire de: dutrieux [Membre]
Bonjour,

Il ne faut pas utiliser un wicket:container pour mettre à jour son contenu en ajax car c'est une balise qui disparait lorsque vous passez vos applications wicket en production (deployment) : si la balise disparait, wicket ne saura pas mettre à jour sont contenus en ajax.

D'autre part à la page suivante, à la section wicket:container, il est indiqué qu'il ne faut pas utiliser une telle balise pour de la maj en ajax :p

http://cwiki.apache.org/WICKET/wickets-xhtml-tags.html


Permalien 18/06/2009 @ 13:53

Vous devez être identifié pour poster un commentaire.

Liste des blogs

@Repository("djo")

Ce blog tourne autour des nouvelles technologies dans le monde Java, tel que Wicket, Eclipse, JSF, Facelets, JPA, Spring, etc. mais aussi de choses moins classiques comme Scala par exemple !

Catégories


Rechercher

<  Février 2012  >
Lun Mar Mer Jeu Ven Sam Dim
    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        

Syndiquez ce blog XML

Articles :

Commentaires :

 
 
 
 
Partenaires

Hébergement Web