p:commandButton action ne fonctionne pas dans p:confirmDialog
J'ai une fonctionnalité où je dois appeler mon bean géré par le biais de mon boîte de dialogue de confirmation qui est pour le bouton supprimer. Lorsque l'utilisateur clique sur le bouton supprimer il y a une boîte de dialogue de confirmation qui s'affiche, puis onclick
de "Oui", un membre de ma famille managed bean doit être appelé. Mais je ne suis pas en mesure de le faire.
<p:commandButton id="Delete" action="#{tbeanId.delete}" icon="ui-icon ui-icon-trash"
value="Delete" title="GDeleteButton" ajax="false" onclick="PF('groupDeleteConfirm').show();" type="button">
<p:confirm header="Delete Record" message="Are you sure about deleting this record?" icon="ui-icon-alert"/>
</p:commandButton>
<p:confirmDialog global="true" showEffect="fade" hideEffect="explode" widgetVar="groupDeleteConfirm">
<p:commandButton title="GDelYesButton" value="Yes" oncomplete="PF('groupDeleteConfirm').hide()" " />
<p:commandButton title="GDelNoButton" value="No" onclick="PF('groupDeleteConfirm').hide()" type="button" />
</p:confirmDialog>
Vous devez vous connecter pour publier un commentaire.
Lorsque vous utilisez le
p:confirmDialog
avecglobal="true"
le confirmer/annuler les boutons sont (un peu unintuitively) identifiés par ces 2 styleClasses:Alors l'action sera appelée et show()/hide() se fera automatiquement. L'Ajax doit être vrai sur le bouton principal et vous n'avez pas besoin
type="button"
donc, dans l'ensemble, il sera beaucoup plus simple:Une autre option serait de rendre non globale. Ensuite, vous aurez besoin de déplacer l'action de la oui-bouton et le message de la p:confirmDialog comme dans
Je ne suis pas sûr que vous voulez vraiment ceux
title
's sur les boutons bien, comme ils sont indiqués à l'utilisateur.Lorsque vous utilisez un
p:commandButton
pour l'action qui doit être fait sur le serveur, vous ne pouvez pas utilisertype="button"
parce que c'est pour boutons qui sont utilisés pour exécuter des scripts javascript personnalisés sans provoquer un ajax/non-requête ajax vers le serveur.À cette fin, vous pouvez passer à la type l'attribut (la valeur par défaut est "soumettre"), ou vous pouvez utiliser explicitement
type="submit"
.Espère que cela va aider quelqu'un!