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 :

[Struts 1.3.8] Utilisation du Plugin Validator ?!


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut [Struts 1.3.8] Utilisation du Plugin Validator ?!
    Bonjour à tous,

    Impossible de faire fonctionner ce Plugin, malgré de nombreux articles sur le Web :





    Voici l'ensemble des créations ou modifs que j'ai réalisées :

    struts-config.xml
    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
    <struts-config>
    	<form-beans>
    		<form-bean name="formChoixMachine"
    	    		   type="com.mycompany.pad.ChoixMachineForm">
    		<!-- Certains scripts ont le "type" mentionné ci-après, la différence ? -->
    		<!-- type="org.apache.struts.validator.DynaValidatorForm" -->
    	    		   <form-property name="manufactNumber" type="java.lang.String"/>
    	    </form-bean>
    	</form-beans>
    	[...]
    	<action-mappings>
    		[...]
    		<action
    			name="formChoixMachine"
    			path="/FormAffichMachine"
    			scope="session"
    			validate="true"
    			input="/choixMachine.do"
    			type="com.mycompany.pad.ChoixMachineAction"
    		>
    			<forward name="succes" path="/vues/ficheMachine.jsp"/>
    			<forward name="echec" path="/vues/choixMachine.jsp"/>
    		</action>
    		[...]
    	</action-mappings>
    	<message-resources parameter="com.mycompany.pad.padRessources"/>
    	<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    		<set-property property="pathnames"
    					  value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"
    		/>
    		<set-property property="stopOnFirstError" value="false"/>
    	</plug-in>
    </struts-config>

    validator-rules.xml (!!! code récupéré sur le net !!!)
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE formation-validation PUBLIC 
         "-//Apache Software Foundation//DTD Commons 
         Validator Rules Configuration 1.3.0//EN" 
         "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">
    <formation-validation>
    	<global>
    		<validator name="required"
    		      classname="org.apache.struts.validator.FieldChecks"
    		         method="validateRequired"
    		   methodParams="java.lang.Object,
    		                 org.apache.commons.validator.ValidatorAction,
    		                 org.apache.commons.validator.Field,
    		                 org.apache.struts.action.ActionMessages,
    		                 org.apache.commons.validator.Validator,
    		                 javax.servlet.http.HttpServletRequest"
    		            msg="errors.required"
    		/>
    		<validator name="mask"
    		      classname="org.apache.struts.validator.FieldChecks"
    		         method="validateMask"
    		   methodParams="java.lang.Object,
    		                 org.apache.commons.validator.ValidatorAction,
    		                 org.apache.commons.validator.Field,
    		                 org.apache.struts.action.ActionMessages,
    		                 org.apache.commons.validator.Validator,
    		                 javax.servlet.http.HttpServletRequest"
    		        depends=""
    		            msg="errors.invalid"
    		/>
    		<validator name="minlength"
    			  classname="org.apache.struts.util.StrutsValidator"
    				 method="validateMinLength"
    		   methodParams="java.lang.Object,
    		   				 org.apache.commons.validator.ValidatorAction,
    		   				 org.apache.commons.validator.Field,
    		   				 org.apache.struts.action.ActionErrors,
    		   				 javax.servlet.http.HttpServletRequest"
    		   		depends="required"
    		   			msg="errors.minlength"
    		/>
    	</global>
    </formation-validation>

    validation.xml
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE form-validation PUBLIC 
         "-//Apache Software Foundation//DTD Commons 
         Validator Rules Configuration 1.3.0//EN" 
         "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">
    <form-validation>
    	<formset>
    		<form name="formChoixMachine">
    			<field property="manufactNumber" depends="required,mask">
    				<msg name="mask" key="error.manufactNumber.incorrect" />
    				<arg position="0" key="error.manufactNumber.incorrect" />
    				<var>
    					<var-name>mask</var-name>
    					<var-value>^[0-9]{6}$</var-value>
    				</var>
    			</field>
    		</form>
    	</formset>
    </form-validation>

    padRessources.properties
    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
    errors.header=<span style="padding-left: 10px">
    errors.footer=</span>
    errors.prefix=<span class="erreur">
    errors.suffix=</span>
    
    error.manufactNumber.incorrect=Numéro de fabrication <i>incorrect</i>.
    error.manufactNumber.inexistant=Numéro de fabrication <i>inexistant</i>.
    
    # Messages d'erreur de Struts Validator
    errors.required={0} est obligatoire.
    errors.minlength={0} ne peut pas être inférieur à {1} caractères.
    errors.maxlength={0} ne peut pas être supérieur à {1} caractères.
    errors.invalid={0} est invalide.
    
    errors.byte={0} doit être de type "byte".
    errors.short={0} doit être de type "short".
    errors.integer={0} doit être de type "integer".
    errors.long={0} doit être de type "long".
    errors.float={0} doit être de type "float".
    errors.double={0} doit être de type "double".
    
    errors.date={0} n'est pas une date valide.
    errors.range={0} n'est pas compris entre {1} et {2}.
    errors.creditcard={0} n'est pas un numéro de carte de crédit valide.
    errors.email={0} n'est pas une adresse de courrier électronique valide.

    ChoixMachineForm
    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
    package com.mycompany.pad;
    
    import org.apache.struts.validator.ValidatorForm;
    
    public class ChoixMachineForm extends ValidatorForm {
    
    	//Déclarations des éléments de la JSP
    	[...]
    
    	//Getters et Setters
    	[...]
    	
    	// Validation
    	// Je peux bien la supprimer cette méthode désormais, non ?!
    	/*public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    		
    		// Gestion des erreurs
    		ActionErrors erreurs = new ActionErrors();
    		
    		// Le chemin du 1er FDM doit être non vide
    		if (getUrlFdm() == null || getUrlFdm() == "") {
    			erreurs.add("urlFdmVide", new ActionMessage("error.urlFdm.vide"));
    		}
    		
    		// Le chemin du 2ème FDM doit être non vide
    		if (getUrlFdm2() == null || getUrlFdm2() == "") {
    			erreurs.add("urlFdm2Vide", new ActionMessage("error.urlFdm2.vide"));
    		}
    		
    		return erreurs;
    	}*/
    }

    Ma 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
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %>
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    		<link rel="stylesheet" href="style/default.css" type="text/css" />
    		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    		<title>Sélection du FDM &agrave; afficher</title>
    		<html:javascript formName="formChoixMachine" dynamicJavascript="false" staticJavascript="true" />
    		<!-- dynamicJavascript à "false" et ça NE plante PLUS -->
    	</head>
    	<body>
    		[...]
    		<div class="conteneur">
    			<h1>Interface de consultation de la BdD des param&egrave;tres machines</h1>
    			<hr />
    			<html:form action="/FormAffichMachine" focus="manufactNumber" onsubmit="return validateFormChoixMachine(this);">
    				<fieldset>
    					<legend>Choix du FDM &agrave; afficher</legend>
    					<p class="fieldset">
    						<label for="manufactNumber">
    							Num&eacute;ro de fabrication : <html:text property="manufactNumber" size="10" maxlength="6" onfocus="select();" />
    						</label>
    						<html:submit styleClass="bouton" value="Soumettre" />
    						<html:errors property="manufactNumberIncorrect" />
    						<html:errors property="manufactNumberInexistant" />
    					</p>
    				</fieldset>
    			</html:form>
    		</div>
    	</body>
    </html>


    Et voici la page d'erreurs avec dynamicJavascript="false" : La JSP s'affiche, je peux soumettre le formulaire et ... :
    Etat HTTP 500 -

    --------------------------------------------------------------------------------

    type Rapport d'exception

    message

    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

    exception

    javax.servlet.ServletException
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


    cause mère

    java.lang.ClassCastException
    com.mycompany.pad.ChoixMachineAction.execute(ChoixMachineAction.java:29)
    org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
    org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.23.

    Et voici la page d'erreurs avec dynamicJavascript="true" : La JSP ne s'affiche même PAS ... :
    Etat HTTP 500 -

    --------------------------------------------------------------------------------

    type Rapport d'exception

    message

    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

    exception

    javax.servlet.ServletException: Exception in JSP: /vues/choixMachine.jsp:10

    7: <link rel="stylesheet" href="style/default.css" type="text/css" />
    8: <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    9: <title>Sélection du FDM &agrave; afficher</title>
    10: <html:javascript formName="formChoixMachine" dynamicJavascript="true" staticJavascript="true" />
    11: </head>
    12: <body>
    13: <div class="menuGaucheBarre"></div>


    Stacktrace:
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


    cause mère

    org.apache.jasper.JasperException: Exception in JSP: /vues/choixMachine.jsp:10

    7: <link rel="stylesheet" href="style/default.css" type="text/css" />
    8: <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    9: <title>Sélection du FDM &agrave; afficher</title>
    10: <html:javascript formName="formChoixMachine" dynamicJavascript="true" staticJavascript="true" />
    11: </head>
    12: <body>
    13: <div class="menuGaucheBarre"></div>


    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:467)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
    org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
    org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


    cause mère

    java.lang.NullPointerException: Depends string "required" was not found in validator-rules.xml.
    org.apache.struts.taglib.html.JavascriptValidatorTag.createActionList(JavascriptValidatorTag.java:707)
    org.apache.struts.taglib.html.JavascriptValidatorTag.createDynamicJavascript(JavascriptValidatorTag.java:441)
    org.apache.struts.taglib.html.JavascriptValidatorTag.renderJavascript(JavascriptValidatorTag.java:396)
    org.apache.struts.taglib.html.JavascriptValidatorTag.doStartTag(JavascriptValidatorTag.java:349)
    org.apache.jsp.vues.choixMachine_jsp._jspx_meth_html_005fjavascript_005f0(choixMachine_jsp.java:134)
    org.apache.jsp.vues.choixMachine_jsp._jspService(choixMachine_jsp.java:79)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
    org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
    org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.23.


    Désolé pour ces "pavés", mais je vois vraiment pas d'où peut venir le problème !


    Merci d'avance,
    Gôm.

  2. #2
    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
    si tu codes une balise form-property dans la balise form-bean, c'est pour utiliser une ActionForm dynamique.
    Les champs du formulaire étant décrits directement dans le struts-config.xml, il n'est plus utile de créer une classe Java qui hérite de ValidatorForm.

    Donc, soit tu utilises une ActionForm dynamique et dans ce cas, pour pouvoir utiliser le validator, il faut mettre effectivement :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <form-bean name="formChoixMachine" type="org.apache.struts.validator.DynaValidatorForm">
    et définir tous les champs de ton formulaire via les balises form-property.

    Soit tu fais appel à ton ActionForm ChoixMachineForm qui hérite de ValidatorForm avec getters et setters sur toutes les propriétés de ton formulaire et tu enlèves la balise form-property de la balise form-bean.

    Dans le cas où tu utilises le Validator, il ne faut effectivement plus coder de méthode validate dans l'ActionForm sauf dans le cas où tu veux combiner le Validator et la validation Java comme décrit dans la FAQ ici.

    Concernant le validator-rules.xml, pourquoi ne pas prendre tout simplement celui livré avec Struts. ça t'évitera les erreurs de balise et de plus, tu seras sûr d'utiliser celui qui va avec ta version de Struts.

    Par exemple, il faut remplacer la balise <formation-validation> par <form-validation>.

  3. #3
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Citation Envoyé par c_nvy
    si tu codes une balise form-property dans la balise form-bean, c'est pour utiliser une ActionForm dynamique.
    Les champs du formulaire étant décrits directement dans le struts-config.xml, il n'est plus utile de créer une classe Java qui hérite de ValidatorForm.

    Donc, soit tu utilises une ActionForm dynamique et dans ce cas, pour pouvoir utiliser le validator, il faut mettre effectivement :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <form-bean name="formChoixMachine" type="org.apache.struts.validator.DynaValidatorForm">
    et définir tous les champs de ton formulaire via les balises form-property.

    Soit tu fais appel à ton ActionForm ChoixMachineForm qui hérite de ValidatorForm avec getters et setters sur toutes les propriétés de ton formulaire et tu enlèves la balise form-property de la balise form-bean.

    Dans le cas où tu utilises le Validator, il ne faut effectivement plus coder de méthode validate dans l'ActionForm sauf dans le cas où tu veux combiner le Validator et la validation Java comme décrit dans la FAQ ici.
    OK, merci pour l'explication !

    Citation Envoyé par c_nvy
    Concernant le validator-rules.xml, pourquoi ne pas prendre tout simplement celui livré avec Struts. ça t'évitera les erreurs de balise et de plus, tu seras sûr d'utiliser celui qui va avec ta version de Struts.

    Par exemple, il faut remplacer la balise <formation-validation> par <form-validation>.
    Je veux bien, mais je n'ai pas du télécharger le Struts contenant le validator-rules.xml, car pas un fichier XML à l'horizon dans l'archive !


    Tu peux me passer le tien ... si tu l'as (ou une bonne âme) ?!

  4. #4
    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
    Ah bon ? dans le répertoire lib de Struts que tu as téléchargé, il n'y a pas de validator-rules.xml ?
    parce que moi je l'ai dans la version 1.2.7.

  5. #5
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Non, pas dans struts-1.3.8-lib.zip.

  6. #6
    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
    Alors peut-être dans le struts-1.3.8-all.zip

  7. #7
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Effectivement, il est dans struts-1.3.8-all.zip !


    Une petite question ... histoire de !

    Ma 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
    [...]
    <html:form action="/FormCompareFdm" method="POST" enctype="multipart/form-data" onsubmit="return validateFormChoixFdm(this);">
    	<table>
    		<tr>
    			<th colspan="2">Comparer deux FDMs</th>
    		</tr>
    		<tr>
    			<td class="ss-titre">FDM n°1 :</td>
    			<td class="txt"><html:file property="urlFdm" accept="text/*.xml" size="50" /><html:errors property="urlFdm" /></td>
    		</tr>
    		<tr>
    			<td class="ss-titre">FDM n°2 :</td>
    			<td class="txt"><html:file property="urlFdm2" accept="text/*.xml" size="50" /><html:errors property="urlFdm2" /></td>
    		</tr>
    		<tr>
    			<td colspan="2" align="right"><html:submit styleClass="bouton" value="Comparer" /></td>
    		</tr>
    	</table>
    </html:form>
    [...]

    Ayant des <html:file> dans ma JSP, comment je les déclare dans mon struts-config.xml ?!

    struts-config.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [...]
    <form-bean name="formChoixFdm" type="org.apache.struts.validator.DynaValidatorForm">
    	<form-property name="urlFdm" type="?????"/>
    	<form-property name="urlFdm2" type="?????"/>
    </form-bean>
    [...]

  8. #8
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.apache.struts.upload.FormFile

  9. #9
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Citation Envoyé par c_nvy
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.apache.struts.upload.FormFile


    Bizarre ... quelque soit le type ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.apache.struts.upload.FormFile
    ... j'ai toujours la même erreur :

    Etat HTTP 500 -

    --------------------------------------------------------------------------------

    type Rapport d'exception

    message

    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

    exception

    javax.servlet.ServletException: BeanUtils.populate
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


    cause mère

    javax.servlet.ServletException: BeanUtils.populate
    org.apache.struts.util.RequestUtils.populate(RequestUtils.java:469)
    org.apache.struts.chain.commands.servlet.PopulateActionForm.populate(PopulateActionForm.java:50)
    org.apache.struts.chain.commands.AbstractPopulateActionForm.execute(AbstractPopulateActionForm.java:60)
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


    cause mère

    org.apache.commons.beanutils.ConversionException: Cannot assign value of type 'org.apache.struts.upload.CommonsMultipartRequestHandler$CommonsFormFile' to property 'urlFdm' of type 'java.lang.String'
    org.apache.struts.action.DynaActionForm.set(DynaActionForm.java:452)
    org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1733)
    org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1648)
    org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1677)
    org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1022)
    org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811)
    org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298)
    org.apache.struts.util.RequestUtils.populate(RequestUtils.java:467)
    org.apache.struts.chain.commands.servlet.PopulateActionForm.populate(PopulateActionForm.java:50)
    org.apache.struts.chain.commands.AbstractPopulateActionForm.execute(AbstractPopulateActionForm.java:60)
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.23.

  10. #10
    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
    Peut-être que le FormFile ne peut pas être utilisé dans une ActionForm dynamique.
    Dans ce cas, il vaut mieux créer une ActionForm avec getter et setter sur la propriété de type FormFile.

  11. #11
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Citation Envoyé par c_nvy
    Peut-être que le FormFile ne peut pas être utilisé dans une ActionForm dynamique.
    Dans ce cas, il vaut mieux créer une ActionForm avec getter et setter sur la propriété de type FormFile.

    Que quelqu'un la contredise !

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    je contre dise, on peut absolument le faire

  13. #13
    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
    Citation Envoyé par sel3aa Voir le message
    je contre dise, on peut absolument le faire
    Dans ce cas, peux-tu montrer comment tu l'as défini dans le struts-config.xml ?
    ça peut servir à d'autres.

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

Discussions similaires

  1. probleme avec plugin validator struts
    Par you.baddi dans le forum Struts 1
    Réponses: 4
    Dernier message: 19/03/2009, 16h44
  2. Réponses: 1
    Dernier message: 21/05/2007, 20h57
  3. Struts - plugin Validator
    Par alexandre7 dans le forum Struts 1
    Réponses: 6
    Dernier message: 19/04/2007, 17h35
  4. Plugin Validator pour Struts
    Par k2vin dans le forum Struts 1
    Réponses: 8
    Dernier message: 30/01/2007, 19h02
  5. Réponses: 8
    Dernier message: 16/06/2006, 15h51

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