J'essaye de coder une modale pour permettre à l'utilisateur de confirmer la suppression d'entités en vain.
Voici le code volontairement simplifié :
1) la commande que j'exécute pour préparer la suppression des entités et pour afficher la modale :
2) la modale en question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <h:form> <a4j:commandButton value="a4j:commandButton" action="#{contractDeletor.prepareJob}" reRender="deleteContractsConfirmModalPanelId" ajaxSingle="true" oncomplete="Richfaces.showModalPanel('deleteContractsConfirmModalPanelId',{width:400, top:200})" /> </h:form> <a4j:include viewId="/ContractDeletionModal.xhtml" rendered="true" />
3) et enfin l'action correspondante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <rich:modalPanel id="deleteContractsConfirmModalPanelId" autosized="true"> <div id="deleteContractsConfirmModalPanelDivId"> <form id="deleteContractsConfirmModalPanelForm"> <a4j:commandButton value="a4j:commandButton" action="#{contractDeletor.doJob}" oncomplete="Richfaces.hideModalPanel('deleteContractsConfirmModalPanelId');" reRender="deleteContractsConfirmModalPanelDivId" /></form> </div> </rich:modalPanel>
L'action #{contractDeletor.prepareJob} est bien exécutée, la modale s'affiche correctement au retour de l'action mais quand je clique sur le bouton de la modale il se produit un postback et l'action #{contractDeletor.doJob} n'est pas exécutée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 @Name("contractDeletor") public class ContractDeletor extends BaseListAnimator implements Serializable { private static final long serialVersionUID = -1465053605583307302L; public String prepareJob() { log.info("Prepare the job"); return null; } public String doJob() { log.info("Do the job"); return null; } }
J'ai essayé de tout mettre dans une même vue (commande et modale) mais ça ne marche pas mieux.
C'est probablement couillon mais je ne vois pas.
Merci d'avance






Répondre avec citation



Partager