J'ai une page à deux onglets, un onglet est la liste des enregistrements, cliquez sur l'enregistrement passera à l'onglet Modifier, et il y a Enregistrer et Annuler les boutons dans le languette.JSF immédiat = "true" pour annuler le bouton ne fonctionne pas
Maintenant, je clique sur l'enregistrement # 1, je fais quelques modifications et je clique sur le bouton Annuler. Certainement je ne veux pas valider le formulaire parce qu'il est annulé, ainsi j'ai placé immediate="true"
sur le bouton d'annulation. Maintenant, l'onglet d'édition est fermé, retour à la liste des enregistrements. Ensuite, je clique sur un autre enregistrement # 2, le problème est survenu: Dans l'onglet d'édition, c'est toujours le contenu précédent de l'enregistrement n ° 1, plutôt que l'enregistrement n ° 2. J'ai vérifié les variables dans la vue de débogage, le bean arrière pour le formulaire d'édition a été réellement rempli avec l'enregistrement # 2.
C'est-à-dire, quelque chose de cassé après une commande immédiate.
(Tout avait été bien avant d'avoir ajouté la validation et immédiate = "true".)
class FormBean {
Record activeRecord;
...
public void clickOnList() {
activeRecord = loadRecord(clickIndex);
}
public void cancelForm() {
activeRecord = null;
}
}
page.xhtml:
<h:form id="main">
...
<p:tab title="Edit" rendered="#{formBean.activeRecord != null}">
...
<p:commandButton value="Cancel"
actionListener="#{formBean.cancelForm}"
update="main" async="true" immediate="true" />
</p:tab>
</h:form>