Re: [Cantharella-devel] CR Réunion Cantharella du 21/03/2013- refresh asynchrone wicket
Le 27/03/2013 02:45, Eric Chatellier a écrit :
Autre chose, j'ai testé dans la partie configuration la reconstruction de l'index et il semblerait qu'il ne fonctionne plus. Pareil sur votre serveur de démo, l'application rend l'exception suivante :
org.apache.wicket.page.CouldNotLockPageException: Could not lock page 6. Attempt lasted 30 seconds Je regarde, j'ai pas le cas. Je qui est étrange, c'est que c'est une erreur wicket et non lucene/hibernate.
Petit détail, j'ai un peu de mal a faire cette interface pour un process long (la reindexation dure environ 30 secondes. J'aimerai désactiver le bouton durant ce temps et le reactiver à la fin. Mais j'arrive pas a gerer les taches longues avec wicket encore. En effet, si on rajout un simple target.add(..) dans le onSubmit(...) de l'AjaxFallbackButton pour effectuer un rafraîchissement intermédiaire, il n'est pas pris en compte car le code entier fait partie d'une même requête Ajax. Il faut donc multiplier les requêtes Ajax envoyés par Wicket . Pour ce faire, le plus simple semble d'instancier un AbstractAjaxTimerBehavior qui enverrait tous les n secondes une requêtes et suivant si le traitement est en cours ou non, mettrait à jour différemment le message. Or dans ce cas où on a besoin que d'un rafraîchissement intermédiaire, il serait certainement plus adapté de demander explicitement qu'une requête AJAX. J'imagine que ça doit être faisable avec un AbstractDefaultAjaxBehavior, en s'inspirant de ce qui est fait dans un AjaxLazyLoadPanel <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.wicket/wicket-extensions/6.6.0/org/apache/wicket/extensions/ajax/markup/html/AjaxLazyLoadPanel.java>.
Sinon j'ai retesté sans m'exciter sur le bouton, c'est effectivement bien l'appel à la suite de plusieurs réindexations qui entraîne une exception. Bon week-end, Adrien -- Adrien Cheype Ingénieur en Systèmes d'Information Service « Informatique Scientifique et Appui Jaux Partenaires du Sud » Direction du Système d'Information (DSI) http://www.ird.fr/dsi/ http://www.ird.fr/informatique-scientifique/ INSTITUT DE RECHERCHE POUR LE DEVELOPPEMENT BP A5 - 98848 Nouméa - Nouvelle Calédonie Tél. +687 260 789
En effet, si on rajout un simple target.add(..) dans le onSubmit(...) de l'AjaxFallbackButton pour effectuer un rafraîchissement intermédiaire, il n'est pas pris en compte car le code entier fait partie d'une même requête Ajax. Il faut donc multiplier les requêtes Ajax envoyés par Wicket . Pour ce faire, le plus simple semble d'instancier un AbstractAjaxTimerBehavior qui enverrait tous les n secondes une requêtes et suivant si le traitement est en cours ou non, mettrait à jour différemment le message. J'ai essayer avec un AbstractAjaxTimerBehavior. Le problème est qu'une seule requete ajax par page est autorisée, et le clic sur le bouton bloque la file pendand la reindexation. Or dans ce cas où on a besoin que d'un rafraîchissement intermédiaire, il serait certainement plus adapté de demander explicitement qu'une requête AJAX. J'imagine que ça doit être faisable avec un AbstractDefaultAjaxBehavior, en s'inspirant de ce qui est fait dans un AjaxLazyLoadPanel <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.wicket/wicket-extensions/6.6.0/org/apache/wicket/extensions/ajax/markup/html/AjaxLazyLoadPanel.java>. Je ne trouve que peut d'exemple là dessus et ca m'à l'air
Le 29/03/2013 06:47, Adrien Cheype a écrit : plus adapté à un affichage différé au chargement d'une page. Ca n'a pas l'air facilement intégrable avec la requete Ajax lors du clic sur le bouton qui bloque l'appel de toute façon. Y a-t-il un autre moyen de voir la chose ? -- Éric Chatellier - Code Lutin Tel: 02.40.50.29.28 - http://www.codelutin.com
participants (2)
-
Adrien Cheype -
Eric Chatellier