2012-05-14 3 views
0

Mon projet utilise AjaxFormValidatingBehavior de Wicket au contenu du formulaire d'enregistrement automatique à la session sur une sorte de forme multi-onglet avec un menu d'arbre (ne se dresse pas de bouton sur les onglets individuels, bien qu'il y ait est un bouton "Sauvegarder" qui soumet le formulaire, exécute les validations et enregistre le contenu dans la base de données). Je suis face à quelques problèmes:AjaxFormValidatingBehavior Performance et perdu le focus sur Firefox

  1. Le comportement est ajouté à tous les composants du formulaire de onChange événement, il y a un serveur voyage chaque utilisateur le temps passe d'un champ à l'autre. Je sais qu'une durée de limitation peut être spécifiée pour empêcher cela, mais il n'est pas possible de la définir dans mon cas car mes formulaires ont des longueurs/complexité différentes, de nombreux composants générés dynamiquement (y compris le menu de l'arborescence). Mais existe-t-il une solution plus élégante pour sauvegarder automatiquement le contenu du formulaire (qui n'a pas de bouton de soumission) plutôt que cette solution ennuyante.

  2. Un autre problème auquel je suis confronté est que post onChange événement, sur Firefox le composant perd son focus après le "voyage du serveur" se termine. Alors que sur IE7 ça fonctionne bien.

Répondre

0

Pour la première question, je pense que vous avez besoin d'ajouter un centre de pipelining, sur onchange appel de vos composants une fonction javascript de votre qui appelle votre webapp. Vous pouvez inclure une fonctionnalité similaire à celle fournie avec la durée du moteur mais pas à la page (retarder chaque appel et ne déclencher le dernier que s'il est plus ancien que x millisecondes par exemple). Pour la seconde, je pense que vous devez utiliser le AjaxRequestTarget#focusComponent dans vos comportements, ou gérer cette chose dans votre "wrapper" comme décrit dans la première réponse.

+0

Normalement, vous ne devriez pas perdre le focus, sauf si vous rafraîchissez le composant que l'utilisateur vient juste de mettre au point. Je suis vraiment incertain pourquoi cela fonctionnerait dans IE7 si –

Questions connexes