I customised the validator just yesterday because it stops at the
first error when using List-backed forms and indexedListProperty and I
wanted it to run all validations down the page.
I tried to extend the relevent class, but found too many methods were
private or package access, rather than protected.
So I just customised it and re-compiled.

I sent a mail to the dev-validator list, but got no replies.

The hack is based on this email I found through google, except I just
removed the offending lines of code completely!

From: Bill Siggelkow <[EMAIL PROTECTED]>
Subject: [Validator] Indexed properties
Date: Thu, 12 Aug 2004 16:23:17 GMT
Prev Next Prev by Thread Next by Thread

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

I have been working with indexedListProperty in Struts 1.2 (using
Validator 1.1.3, I believe). Suppose I have the following validation:

----------------------------------------------------------------
<field property="partNumber" indexedListProperty="orders"
         depends="minlength">
    <arg position="0" key="prompt.partNumber"/>
    <arg position="1" key="${var:minlength}"
         resource="false"/>
    <var>
        <var-name>minlength</var-name>
        <var-value>5</var-value>
    </var>
</field>
----------------------------------------------------------------

Now, when I validate the form, if the minlength validation fails on one
of the indexed properties, then none of the rest of the partNumber
fields are checked for minlength.

I am using Struts and I was trying to output the error message beside
the property using html:messages -- the result is that the error message
is only generated for the first property that fails.

For what its worth, I did hack a fix -- I changed the

ValidatorResults validate(Map params, Map actions) method in the Field
class [org.apache.commons.validator.Field].

Basically where it had (on line 724):
-----------------------------------------
                 if (!good) {
                     return allResults;
                 }
----------------------------------------

I made it ...
-----------------------------------------
                 if (!good && numberOfFieldsToValidate <= 1) {
                     return allResults;
                 }
----------------------------------------

This worked -- in other words I get all the messages generated for each
field if the field is indexed.

Any opinions on ramifications of making this change or other possible
solutions? I have not messed at all with the client-side javascript so I
am not sure what the behavior is like there.

Bill Siggelkow


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



On 14/10/05, Paul Benedict <[EMAIL PROTECTED]> wrote:
> Does anyone ever run any custom versions of Struts or
> the Commons library? The reason I ask is because the
> bug that I need fix (it is now fixed) in Commons
> Validator isn't released for the Struts 1.2.x branch,
> but most likely will be released with Struts 1.3....
> Well I don't like using release 1 of anything :-) I
> wouldn't want to upgrade to Struts 1.3 until it at
> least gets into version 1.3.3 or something - the
> theoretical risk for large bugs is high... Just think
> of how many releases were for Struts 1.2!
>
> So what's the right solution here? I would like to see
> a Strut 1.2.8, as I said, with an upgraded Commons
> Validator too. Do I just compile a custom version of
> Validator for myself? I'd like to hear opinions.
>
>
>
> __________________________________
> Yahoo! Music Unlimited
> Access over 1 million songs. Try it free.
> http://music.yahoo.com/unlimited/
>
> ---------------------------------------------------------------------
> 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