Rendu d'autres formulaire en ajax causes de son état d'affichage à être perdu, comment puis-je ajouter ce retour?
J'ai
<h:form>
<h:commandLink action="#{my_fake_ajax_link}">
<h:outputText value="Link" />
<f:ajax render=":mydiv" />
</h:commandLink>
</h:form>
<h:panelGroup layout="block" id="mydiv">
<h:form>
<h:commandLink action="#{mybean.delete(0)}">
<h:outputText value="Here" />
<f:ajax render="@form" />
</h:commandLink>
</h:form>
</h:panelGroup>
Quand je clique une fois sur "my_fake_ajax_link", puis j'ai cliquer deux fois sur le lien "supprimer". Ce n'est qu'un exemple. Je n'ai pas de ce cas réel. J'ai plusieurs formulaires sur une page et je ne peux pas juste ajoutez-les tous dans un seul formulaire.
J'ai vérifié ce que le problème est et la il est:
- Lorsque vous cliquez sur "my_fake_ajax_link", le
mydiv
refreshs avec l'ajax comme il se doit. - ViewState de l'actualisation formulaire en ajax est manquant.
Comment puis-je ajouter le ViewState? Comment puis-je le faire fonctionner sans l'aide d'un seul formulaire? Cela ressemble à un JSF bug pour moi. Je ne veux pas d'actualisation div automatiquement avec
jQuery("#mydiv").load(document.location.href);
mais je le ferai dans mon pire des cas possibles.
OriginalL'auteur Alex | 2011-10-18
Vous devez vous connecter pour publier un commentaire.
C'est un problème connu dans l'auto-inclus
jsf.js
bibliothèque de JSF qui gère les réponses ajax. Voir aussi JSF éd. 790 qui est corrigé dans la prochaine JSF 2.3. En attendant, avec la JSF 2.0/2.1/2.2, vous devez explicitement spécifier l'ID de l'autre<h:form>
à l'intérieur de larender
attribtue pour déclencher la bonne plus de l'état d'affichage.Non, cela n'entraîne pas de surcharge ou de balisage de la duplication dans l'ajax de réponse. Vous pouvez également utiliser OmniFaces
fixviewstate.js
.Voir aussi:
Vous êtes les bienvenus.
C'est une honte, il n'a pas fait son chemin dans la JSF 2.2. Nous allons attendre encore un an ou deux pour l'avoir fixé...
OmniFaces à la rescousse: showcase.omnifaces.org/scripts/FixViewState
Merci! Vraiment résolu un problème ici.
OriginalL'auteur BalusC
Solution de contournement pour que:
Vous devez d'abord créer un
onevent
gestionnaire pour le bouton qui envoie de la requête ajax:Ensuite, vous devez déclarer les méthodes javascript qui va prendre le bon état d'affichage de la valeur et de l'ajouter à toutes les formes qui n'ont pas l':
OriginalL'auteur Igor Mukhin