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

Struts 1 Java Discussion :

Soumettre un formulaire via html:link dans une LookUpDispatchAction


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Points : 14
    Points
    14
    Par défaut Soumettre un formulaire via html:link dans une LookUpDispatchAction
    Bonjour à tous,

    J'ai un soucis avec un lien :
    J'associe à ce lien <html:link> une action définie dans une classe dérivée de LookUpDispatchAction. L'enchainement se passe bien. En mode debug, je me retrouve bien dans l'action associée. Mais les données membre du formulaire en argument de la méthode sont null. Aucune donnée de mon formulaire de la page jsp ne sont soumises.
    Or si je fais la même chose avec un bouton de type "submit" je récupère bien les données...
    Voici mon code :

    Extrait de la page JSP
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <html:form action="/file_caracteristics.do">
    <table width="100%" class="tabcontenu" border=0>
    	<col width="140">
    	<col>
    	<tr>
    		<!-- MENU -->
    		<td>
    			<table class="tabnav" height="100%" border=0>
    				<tr>
    					<td>&nbsp;</td>
    				</tr>
    				<!-- Test de soumettre via un bouton 'submit'-->
    				<tr onMouseOver="this.className='tdhover'" onMouseOut="this.className=''">
    					<td>
    						<html:submit property="action" onclick="">
    							<bean:message key="caracteristics.test" />
    						</html:submit>
    					</td>
    				</tr>				<tr>
    					<td>&nbsp;</td>
    				</tr>
    				<!-- Test de soumettre via un lien-->
    				<tr onMouseOver="this.className='tdhover'" onMouseOut="this.className=''">
    					<td>
    						<bean:define id="actionTest" >
    							<bean:message key="caracteristics.test" />
    						</bean:define>
    						<html:link action="file_caracteristics" paramId="action" paramName="actionTest" >
    							<bean:message key="caracteristics.test" />
    						</html:link>
    					</td>
    				</tr>			</table>
    		</td>
    		<td>
    		<!-- PARTIE CENTRALE avec les zones de saisie du formulaire-->
    			<table class="bloccontenu" border=1>
    				<COLGROUP>
    				<col width=130 align="left">
    				<col align="left">
    				<tr>
    					<td>
    						<bean:message key="param.characteristics.code" />
    					</td>
    					<td class="textLabel">
    						<html:text name="fileSel" property="code"/>
    					</td>
    				</tr>
    				<tr>
    					<td>
    						<bean:message key="param.characteristics.description" />
    					</td>
    					<td>
    						<html:textarea name="fileSel" property="description" />
    					</td>
    				</tr>
    			</table>
    		</td>
    	</tr>
    </table>
    </html:form>

    Extrait de la classe FileCaracteristicsLookUpDispatchAction
    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
    20
    21
    22
    23
    24
    25
     
    public class FileCaracteristicsLookUpDispatchAction extends LookupDispatchAction {
     
    	protected Map getKeyMethodMap() {
    		HashMap mapFile = new HashMap();
    		mapFile.put("caracteristics.test","test");
     
    		return mapFile;
    	}
     
    	public ActionForward test(ActionMapping mapping,
    			ActionForm form,
    			HttpServletRequest request,
    			HttpServletResponse response)
    			throws Exception {
    		//récupération des données
    		FileSelectionForm newFileForm =(FileSelectionForm)request.getAttribute(mapping.getAttribute());
    		FileBean newFile = new FileBean();
    		BeanUtils.copyProperties(newFile, newFileForm);
     
    		//suite souhaitée....
     
    		return mapping.findForward("test");
    	}
    }
    Qqn sait comment soumettre les données du fomulaire via un lien ?
    J'ai essayé en utilisant du javascript et la fonction submit du formulaire mais ça n'a pas marché...
    Merci de votre attention.

    BK

  2. #2
    vny
    vny est déconnecté
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 74
    Points : 48
    Points
    48
    Par défaut
    Bonjour,

    J'utilise cela un peu partout avec le code suivant :

    <a href="javascript:add();" tabindex="5">
    <img src="/images/add.gif" />&nbsp;<b>Ajouter</b>
    </a>

    <script type="text/javascript">
    function add()
    {
    document.forms[0].action="/action.do?methode=add";
    document.forms[0].submit();
    }
    </script>

    Et donc pas d' html:link mais un simple link.

  3. #3
    Membre actif
    Profil pro
    Developpeur
    Inscrit en
    Avril 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Avril 2004
    Messages : 160
    Points : 212
    Points
    212
    Par défaut
    <html:link> submit pas les champs d'un formulaire, il faut passer par javascript comme vny a dit ou utiliser des <image> ou <html:submit>.

    Je vois pas l'interet d'utiliser <html:link>

    Si tu veux pas faire un traitement special avant de submitter le formulaire tu utilise directement <image> ou <html:submit> et ton action sera definit dans <html:from action="tonAction"....</>

    Sinon tu passe par une fct javascript et ladans tu change de l'action si tu veux et tu fait un submit.

    Bonano

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Merci pour vos réponse.
    Le pb avec la partie en javascript, c'est que si je mets des tags <html:submit> ailleurs dans ma page, je ne peux pas utiliser 'document.forms[0].action' ce qui me gêne beaucoup... c'est qd même bizarre ça!
    Dès que dans ma page JSP j'ai un bouton <html:submit>
    alors 'document.forms[0].action' vaut [object] et je ne peux plus rien lui affecter sinon erreur javascript... J'ai l'impression d'être bloqué car j'essaie de faire du générique et avec le javascript c'est pas le top

  5. #5
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    En fait, tu as un problème avec 'document.forms[0].action' tout simplement parce que tes boutons submit ont une propriété que tu as nommé action.
    Or, action est une propriété du formulaire.
    Du coup, tu l'écrases et tu ne peux plus faire référence à l'Action appelée par le formulaire dans le javascript.

    Donne un autre nom (par exemple methode) à ton attribut parameter dans le mapping de la LookupDispatchAction et donc aussi dans l'attribut property des tags html:submit et dans l'attribut paramId du tag html:link et ça devrait fonctionner mieux.

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Merci beaucoup c_nvy (et les autres)...
    Effectivement le fait de mettre 'action' en parameter de mon action bloquait l'attribut action javascript.
    Maintenant ça marche!

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

Discussions similaires

  1. [MySQL] Variables pour un formulaire html stocké dans une bdd
    Par Benji1507 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/05/2015, 22h42
  2. Réponses: 2
    Dernier message: 07/08/2006, 22h36
  3. <html:link> avec une variable en paramètre
    Par mariemor64 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 02/06/2006, 11h26
  4. Réponses: 3
    Dernier message: 23/04/2006, 12h14
  5. [Formulaires] Traitement des données dans une autre page...
    Par sekiryou dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/03/2006, 09h08

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