Comment ré-exécuter la fonction javascript après le formulaire reRender?
J'ai besoin de ré-exécuter le code javascript juste après la forme obtient un nouveau rendu. Simplement, la mise en javascript après le XHTML le contenu ne sera pas aider à depuis sa un partiel de la demande. Aussi, je ne peux pas utiliser "onComplete" comme le bouton de commande à partir de laquelle je suis re-rendu de formulaire est en JSF composant utilisé à plusieurs endroits. J'ai besoin d'obtenir le correctif dans localement.
Est-il de toute façon? Je me demandais si f:ajax serait utile dans ce cas.
S'il vous plaît laissez-moi savoir, si quelqu'un a la moindre idée à ce sujet.
source d'informationauteur A.G.
Vous devez vous connecter pour publier un commentaire.
Façon la plus simple est de mettre juste la JS appel de fonction dans l'à-être-mis à jour le composant lui-même.
De cette façon, il est exécuté tant que le chargement de la page et aussi si le formulaire mis à jour par ajax.
À la
<f:ajax>
lui-même, vous pouvez également utiliser sesonevent
attribut.avec
Vous pouvez ajouter un hook global par
jsf.ajax.addOnEvent()
de sorte que vous n'avez pas besoin de le spécifier dans chaqueonevent
attribut de<f:ajax>
si l'exigence fonctionnelle s'applique à chaque requête ajax.Une alternative est d'utiliser le OmniFaces JSF bibliothèque utilitaire qui offre la
<h:onloadScript>
pour exactement cet effet. Vous pouvez le placer dans la tête de façon à ce que vous voulez.C'est automatiquement ré-exécutée sur chaque requête ajax sur la vue, de sorte que vous n'avez pas besoin de le copier sur une pluralité de lieux dans le point de vue qui peut être ajax-mise à jour, ou de répéter son parent ID dans chaque
<f:ajax render>
.BalusC première réponse est le plus approprié si vous voulez faire des opérations complexes avec JQuery/JS et ne sont pas particulièrement préoccupés par cette
Plus complexes, JS, si vous décidez d'utiliser un gestionnaire d'événement global et par exemple, vous utiliser JS pour
bind
fonctions à des éléments, ces fonctions vont être re-lié (donc exécuté à deux reprises), de sorte que vous besoin de savoir ce qui doit être ré-exécuté.Ce que je l'ai enfin fait, était d'obtenir l'id de l'événement de rappel et d'exécuter seulement les JS/JQuery:
Remarque: ces vilaines
for
boucles sont probablement pas nécessaire (vous pouvez utiliser clildren[0]), mais je n'ai pas trouvé le temps encore de vérifier les spécifications.Vous pouvez ajouter jQuery pour votre application et de faire quelque chose comme:
Vous pouvez prendre un coup d'oeil ici http://api.jquery.com/load/
LE: que
l'ofc.