Bill,

I like how you think! Hats off to you for that good idea.

Regards,
David

-----Original Message-----
From: news [mailto:[EMAIL PROTECTED] Behalf Of Bill Siggelkow
Sent: Thursday, December 02, 2004 10:21 AM
To: [EMAIL PROTECTED]
Subject: Re: Problem with validation using both minlength and maxlength
on the same field


AFAIK you cannot pull the minlength and maxlength values from the
resource bundle; BUT, you can define these values as global constants in
a validation.xml file. If you want, you could create a separate
validation-constants.xml file only containing these values; making it
easier for modification.

-Bill Siggelkow

David G. Friedman wrote:


> AHA!  It all makes sense then.  Since I didn't
> see a way to make the <var>...</var> tag pull
> from a resource, is there any way to do that?
> Then, theoretically, I can make the arg AND the
> var pull from the same resource label and make
> it easier for someone else to modify things
> instead of giving them access to the validation
> file.  A quick read of the source code for
> the commons validator Var object doesn't
> suggest any blatant way to do this, not to me.
> Do you think I should I submit a bugzilla
> enhancement request if there isn't a way to do
> it?  After all, the other fields can pull from
> a resource. *sad puppy dog look*
>
> Maybe we should bold the note about var fields
> being required.  Speed readers like me, in this
> case, sometimes miss key points like that. :)
>
> Regards and thanks for clearing this up for me,
> David
>
> -----Original Message-----
> From: Niall Pemberton [mailto:[EMAIL PROTECTED]
> Sent: Thursday, December 02, 2004 4:24 AM
> To: Struts Users Mailing List
> Subject: Re: Problem with validation using both minlength and maxlength
> on the same field
>
>
> David,
>
> Its not a bug, its not designed to work that way.
>
> For the minlength validator you have to specify a minlength <var>
otherwise
> it doesn't work properly (it will check for a minimum length of zero,
which
> is nonsense).
>
> For the maxlength validator you have to specify a maxlength <var>
otherwise
> it doesn't work properly (it will check for a maximum length of zero,
which
> is also nonsense).
>
> The <arg> elements are only used as replacement values for error
messages -
> not by the validator in actually checking the minimum or maximum length.
>
> Niall
>
> ----- Original Message -----
> From: "David G. Friedman" <[EMAIL PROTECTED]>
> To: "Struts Users Mailing List" <[EMAIL PROTECTED]>
> Sent: Thursday, December 02, 2004 6:09 AM
> Subject: RE: Problem with validation using both minlength and maxlength on
> the same field
>
>
>
>>Niall,
>>
>>Derek isn't crazy and this looks like a bug to me IF your args try to use
>>'resource="true"'.  I duplicated the problem using Struts 1.2.4 with the
>>commons validator 1.1.3 and 1.1.4 jars.  Sadly, the java code suggests
>>resource="true" works in 1.1.4 but I can't get it to work even with a new
>>1.1.4 testing jar AND fully stopping/restarting Tomcat 5.5.4.
>
> Essentially,
>
>>I'm seeing resource="true" use the message resources to fill out the error
>>fields on both the client and server sides, just not populating the vars
>
> for
>
>>the client or server side validations to be able to use them.
>>
>>For example, using this rule, call it "rule A", everything works normally
>
> on
>
>>the client and server sides:
>>
>><form name="testingForm">
>>    <field property="name" depends="required, minlength, maxlength">
>>        <arg0 key="testingForm.name"/>
>>        <arg1 name="minlength" key="${var:minlength}" resource="false" />
>>        <arg1 name="maxlength" key="${var:maxlength}" resource="false" />
>>        <var><var-name>minlength</var-name><var-value>7</var-value></var>
>>        <var><var-name>maxlength</var-name><var-value>20</var-value></var>
>>    </field>
>></form>
>>
>>Modifying this into "rule B", the validation will not work on the client
>>side OR the server side, BUT the error messages show the appropriate
>
> message
>
>>resources numbers and words (for the arg0 field name, for example).  Here
>
> is
>
>>"rule B":
>>
>><form name="testingForm">
>>    <field property="name" depends="required, minlength, maxlength">
>>        <arg0 key="testingForm.name"/>
>>        <arg1 name="minlength" key="testingForm.name.min" resource="true"
>
> />
>
>>        <arg1 name="maxlength" key="testingForm.name.max" resource="true"
>
> />
>
>>    </field>
>></form>
>>
>>My message resources file works properly (tested thoroughly) with:
>>testingForm.name=Name
>>testingForm.name.min=7
>>testingForm.name.max=20
>>
>>At: /WEB-INF/classes/resources/Application.properties
>>In struts-config.xml as:
>><message-resources parameter="resources.Application" null="false" />
>>
>>Here is the lower level stuff showing the problem.  With "rule A", our
>>Validation methods set maxlength, minlength, etc. properties as expected
>
> in
>
>>the JavaScript such as:
>>
>>function ValidationForm_required () {
>>     this.a0 = new Array("name", "Name is required.", new Function
>>("varName", "this.maxlength='20'; this.minlength='7';  return
>>this[varName];"));
>>    }
>>
>>    function ValidationForm_minlength () {
>>     this.a0 = new Array("name", "Name can not be less than 7
>
> characters.",
>
>>new Function ("varName", "this.maxlength='20'; this.minlength='7';  return
>>this[varName];"));
>>    }
>>
>>    function ValidationForm_maxlength () {
>>     this.a0 = new Array("name", "Name can not be greater than 20
>>characters.", new Function ("varName", "this.maxlength='20';
>>this.minlength='7';  return this[varName];"));
>>    }
>>
>>And in the server-side Java Field object:
>>
>>Field:
>>key = name
>>property = name
>>indexedProperty = null
>>indexedListProperty = null
>>depends = required, minlength, maxlength
>>page = 0
>>fieldOrder = 0
>>Vars:
>>maxlength=Var: name=maxlength  value=20  jsType=null
>>
>>minlength=Var: name=minlength  value=7  jsType=null
>>
>>However, set the resource="true" as in "rule B", and you are missing that
>>information on both the client side and the server side:
>>
>> function ValidationForm_required () {
>>     this.a0 = new Array("name", "Name is required.", new Function
>>("varName", " return this[varName];"));
>>    }
>>
>>    function ValidationForm_minlength () {
>>     this.a0 = new Array("name", "Name can not be less than 7
>
> characters.",
>
>>new Function ("varName", " return this[varName];"));
>>    }
>>
>>    function ValidationForm_maxlength () {
>>     this.a0 = new Array("name", "Name can not be greater than 20
>>characters.", new Function ("varName", " return this[varName];"));
>>    }
>>
>>And for the server-side your Field object ALSO lacks the variables:
>>
>>Field:
>>key = name
>>property = name
>>indexedProperty = null
>>indexedListProperty = null
>>depends = required, minlength, maxlength
>>page = 0
>>fieldOrder = 0
>>Vars:
>>
>>End result, "rule A" works on both sides while "rule B" fails on both
>
> sides
>
>>but does correctly populate the error fields with the message parameters.
>>
>>=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
>>
>>Additionally, I don't like the redundancy.  Using the above illustrations,
>>this.a0 is set in EVERY method.  Can't we consolidate this so it is setup
>>once something like the below and have that put into the main
>>"validateWhateverForm(form)" method after checking that bCancel is false
>
> and
>
>>before the validation checks?
>>
>>this.a0 = new Array("name", new Function ("varName", "this.maxlength='20';
>>this.minlength='7';  this.error.minlength='Name can not be less than 7
>>characters.'; this.error.maxlength='Name can not be greater than 20
>>characters.';return this[varName];"));
>>
>>The 2 differences being:
>>
>>a) All errors are in one place under this.error.VALIDATIONTYPE such as
>>this.error.minlength, this.error.maxlength, this.error.required,
>>this.error.intRange, etc. instead of being Array index 1 (if starting from
>
> a
>
>>zero array index position)
>>
>>b) Initialization for each object is in one place.  Since the JavaScript
>>appears to look for an object matching the first name of the Array anyway,
>>wouldn't this be cleaner and less redundant?
>>
>>Should I post the top part and/or the bottom part to Buzilla?  Which one?
>>Commons or Struts?  Opinions are requested on this one plus a few more
>>people to triple check this by performing their own simple tests like
>
> mine.
>
>>Regards,
>>David
>>
>>-----Original Message-----
>>From: Niall Pemberton [mailto:[EMAIL PROTECTED]
>>Sent: Wednesday, December 01, 2004 8:11 PM
>>To: Struts Users Mailing List
>>Subject: Re: Problem with validation using both minlength and maxlength
>>on the same field
>>
>>
>>You need to specify maxlength and minlength variables.
>>
>>          <field
>>            property="myField"
>>            depends="minlength, maxlength, integer">
>>            <arg0 key="sampleApp.myField.label"/>
>>            <arg1 key="sampleApp.myField.minLen" name="minlength"  />
>>            <arg1 key="sampleApp.myField.maxLen" name="maxlength"  />
>>            <var>
>>                 <var-name>minlength</var-name><var-value>10</var-value>
>>            </var>
>>            <var>
>>                 <var-name>maxlength</var-name><var-value>20</var-value>
>>            </var>
>>
>>Alternatively, if its an integer field you could use the intRange
>
> validator
>
>>instead
>>
>>          <field
>>            property="myField"
>>            depends="integer,intRange">
>>            <arg0 key="sampleApp.myField.label"/>
>>            <arg1 key="${var:min}" resource="false"  />
>>            <arg2 key="${var:max}" resource="false"  />
>>            <var>
>>                 <var-name>min</var-name><var-value>10</var-value>
>>            </var>
>>            <var>
>>                 <var-name>max</var-name><var-value>20</var-value>
>>            </var>
>>
>>
>>Niall
>>
>>----- Original Message -----
>>From: "David G. Friedman" <[EMAIL PROTECTED]>
>>To: "Struts Users Mailing List" <[EMAIL PROTECTED]>
>>Sent: Thursday, December 02, 2004 12:46 AM
>>Subject: RE: Problem with validation using both minlength and maxlength on
>>the same field
>>
>>
>>
>>>Derek,
>>>
>>>I'm seeing the same thing you described.  I'm sorry I didn't believe
>
> you.
>
>>>Sadly, I'm having a HELL of a time figuring out what's wrong because I
>>>recently upgraded my development setup to Struts 1.2.4 and Tomcat 5.5.4
>>
>>and
>>
>>>haven't used validation in a while.  Trying the 1.1.4 validator binary
>>>didn't help any.  I'm feeling really stupid since used to be able to get
>>>this to work.  Too many variables have changed on me. *sigh*
>>>
>>>Regards,
>>>David
>>>
>>>-----Original Message-----
>>>From: Derek Broughton [mailto:[EMAIL PROTECTED]
>>>Sent: Wednesday, December 01, 2004 1:18 PM
>>>To: Struts Users Mailing List
>>>Subject: Re: Problem with validation using both minlength and maxlength
>>>on the same field
>>>
>>>
>>>On Wednesday 01 December 2004 13:49, [EMAIL PROTECTED] wrote:
>>>
>>>>I'm trying to validate a simple field.  I want to validate that the
>>
>>field
>>
>>>>is an integer, and meets the min and max length requirements.  In the
>>
>>same
>>
>>>>application I am able to correctly validate a date field so I'm
>>
>>confident
>>
>>>>my overall struts setup is correct.  However when I try to do both a
>
> min
>
>>>>and max length check on the same field, the max length check doesn't
>>
>>work.
>>
>>>> If I exceed the max length I get the min length message.  Below is a
>>>>snippet from my validation.xml file.  I've setup my properties file to
>>>>include the min and max length constants.
>>>>
>>>>validation.xml
>>>>...
>>>>...
>>>>         <field
>>>>           property="myField"
>>>>           depends="minlength, maxlength, integer">
>>>>           <arg0 key="sampleApp.myField.label"/>
>>>>           <arg1 key="sampleApp.myField.minLen" name="minlength"  />
>>>>           <arg1 key="sampleApp.myField.maxLen" name="maxlength"  />
>>>
>>>Despite two other good looking answers, I'd have to say that it seems
>>>unlikely
>>>that these should _both_ be "arg1" :-)
>>>--
>>>derek
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>
>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to