Bonjour,

J'essaye de mettre en place des validator dans un petit exemple de saisie+submit/validator+ page affichage info, j'ai vu qu'on devait personnaliser certaines fonctions dans le validation-rules.xml, tel que mask, required, minlength, maxlength, date, etc..

required fonctionne, mais il ne trouve pas la methode maxlength, malgre le javascript, cela ne semble pas repondre ou matcher le mapping

Je n'ai pas d'erreur des fichiers validation et validation-rules au lancement du tomcat

j'ai un no such method validateMaxLength, quand je submit pour passer a l'ecran suivant.

Une idée, une piste ?

Merci d'avance pour vos infos

j'utilise un struts 1.3.9, mon ecran est une actionForm.
INFO: Starting Servlet Engine: Apache Tomcat/6.0.14
28 oct. 2007 17:05:42 org.apache.struts.action.ActionServlet initChain
INFO: Loading chain catalog from jar:file:/C:/Users/bordi/workspace/TestStruts/WEB-INF/lib/struts-core-1.3.9.jar!/org/apache/struts/chain/chain-config.xml
28 oct. 2007 17:05:42 org.apache.struts.validator.ValidatorPlugIn initResources
INFO: Loading validation rules file from '/WEB-INF/validator-rules.xml'
28 oct. 2007 17:05:42 org.apache.struts.validator.ValidatorPlugIn initResources
INFO: Loading validation rules file from '/WEB-INF/validation.xml'

28 oct. 2007 17:05:43 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
28 oct. 2007 17:05:43 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
28 oct. 2007 17:05:43 org.apache.coyote.http11.Http11Protocol start
INFO: Démarrage de Coyote HTTP/1.1 sur http-8000
28 oct. 2007 17:05:43 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
28 oct. 2007 17:05:43 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/63 config=null
28 oct. 2007 17:05:43 org.apache.catalina.startup.Catalina start
INFO: Server startup in 2076 ms
28 oct. 2007 17:06:07 org.apache.struts.chain.ComposableRequestProcessor init
INFO: Initializing composable request processor for module prefix ''
28 oct. 2007 17:06:07 org.apache.struts.validator.ValidatorForm validate
GRAVE: No such validation method: org.apache.struts.validator.FieldChecks.validateMaxLength(java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest)
org.apache.commons.validator.ValidatorException: No such validation method: org.apache.struts.validator.FieldChecks.validateMaxLength(java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest)
at org.apache.commons.validator.ValidatorAction.loadValidationMethod(ValidatorAction.java:604)
Un extrait du fichier validation.xml :
Code xml : 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
     <form name="animal">
        	<field property="nom"
        	       depends="required,maxlength"
        	       page="0*">
        	       <arg key="animal.errors.nom"/>
        	       <var>
                      	   <var-name>maxlength</var-name>
                   	       <var-value>20</var-value>
                   </var>
        	</field>      	
        	<field property="dateNaiss"
        	       depends="required,date"
        	       page="0">
        	       <arg key="animal.errors.dateNaiss"/>
        	       <var>
        	       		<var-name>datePattern</var-name>
        	       		<var-value>dd/MM/yyyy</var-value>
        	       </var>
        	</field>
 
        	<field property="type"
        			depends="required"
        			page="0">
        			<arg key="animal.errors.type"/>
            </field>
 
            <field property="proprietaire.nom"
                   depends="required,minlength,maxlength,mask"
                   page="1">
                   <arg key="identite.nom"/>
                   <var>
                   	       <var-name>minlength</var-name>
                   	       <var-value>2</var-value>
                   </var>
                   <var>
                      	   <var-name>maxlength</var-name>
                   	       <var-value>20</var-value>
                   </var>
                   <var>
                      	   <var-name>mask</var-name>
                   	       <var-value>${lettre}</var-value>
                   </var>
            </field>
 
                </form>
 
   </formset>
Un extrait de mon fichier validation-rules.xml :
Code xml : 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
<validator name="maxlength"
            classname="org.apache.struts.validator.FieldChecks"
               method="validateMaxLength"
         methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.maxlength">
 
         <javascript><![CDATA[
            function validateMaxLength(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oMaxLength = new maxlength();
                for (x in oMaxLength) {
                    var field = form[oMaxLength[x][0]];
 
                    if (field.type == 'text' ||
                        field.type == 'textarea') {
 
                        var iMax = parseInt(oMaxLength[x][2]("maxlength"));
                        if (field.value.length > iMax) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oMaxLength[x][1];
                            isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return isValid;
            }]]>
         </javascript>
 
      </validator>