IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Pourquoi mon action dans une modal ne s'exécute pas ?
    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 :

    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" />
    2) la modale en question :

    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>
    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
    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;
    	}
    }
    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.

    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

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    novembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : novembre 2009
    Messages : 15
    Points : 21
    Points
    21
    Par défaut
    Pas sûr, mais as tu vérifié tes logs, pour voir si réellement ton action prepareJob est éxécutée ?

    Peut-être faut-il associer ton action à tes méthodes ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    J'ai vérifié en mode Debug, je m'arrête bien dans la méthode prepareJob. En revanche quand je clique sur le bouton de la modale, cette dernière se ferme et je retourne directement dans la page principale sans exécuter la méthode dojob.

    Je vois toujours pas où est le PB ?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Le problème venait de la balise <form> dans la modale.

    En utilisant <h:form> ou <a4j:form> ça marche au poil :

    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">
    	<a4j:form id="deleteContractsConfirmModalPanelForm">
    		<a4j:commandButton value="a4j:commandButton"
    			action="#{contractDeletor.doJob}"
    			oncomplete="Richfaces.hideModalPanel('deleteContractsConfirmModalPanelId');"
    			reRender="deleteContractsConfirmModalPanelDivId" /></form>
    	</div>
    </rich:modalPanel>
    Merci
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Actions dans une liste deroulante
    Par rozwel dans le forum Struts 1
    Réponses: 4
    Dernier message: 23/06/2006, 14h38
  2. Réponses: 4
    Dernier message: 15/06/2006, 10h05
  3. [Plug-in]"Link with editor" view action dans une de mes vues...
    Par tophebboy dans le forum Eclipse Platform
    Réponses: 5
    Dernier message: 19/05/2006, 14h49
  4. [Struts] Appel d'une action dans une action
    Par cosmos38240 dans le forum Struts 1
    Réponses: 2
    Dernier message: 16/02/2006, 15h52
  5. [STRUTS] Plusieurs actions dans une meme page
    Par DarkWark dans le forum Struts 1
    Réponses: 22
    Dernier message: 10/01/2006, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo