Try moving the validation logic to the second component...

I don't think rdg1Max has rewinded (and given a chance to update its value)
when rdg's validator kicks in.


Julian Wood wrote:
> Hmm, so am I off in left field here? Is it not possible to validate
> the contents of one field based on the contents of another,
> server-side? Is there a bug?
>
> Thanks,
>
> J
>
> On 1-Oct-06, at 8:31 PM, Julian Wood wrote:
>
>> I'm using a bean for validation. In particular, I want to make sure
>> that one field is lte another (think exam scores 6 out of 12). So I
>> have a bean set up like this:
>>
>>     <bean name="maxOne" lifecycle="none"
>> class="ca.ucalgary.commons.mt3.controller.MaxNullValidator">
>>         <set name="max" value="ognl:record.rdg1Max"/>
>>     </bean>
>>
>> And components like this:
>>
>>     <component id="rdg1" type="TextField">
>>         <binding name="value" value="ognl:record.rdg1"/>
>>         <binding name="translator" value="translator:number"/>
>>         <binding name="displayName" value="literal:rdg1"/>
>>         <binding name="validators" value="beans.maxOne"/>
>>     </component>
>>
>>     <component id="rdg1Max" type="TextField">
>>         <binding name="value" value="ognl:record.rdg1Max"/>
>>         <binding name="translator" value="translator:number"/>
>>         <binding name="displayName" value="literal:rdg1 Max"/>
>>     </component>
>>
>> Template is like this:
>>
>>             <input jwcid="rdg1" class="score"/>
>>                 out of
>>                 <input jwcid="rdg1Max" class="score"/>
>>
>> Now ignoring the actual validation, which is simple, when I render
>> this page, max is null as indicated by logging from the setter in
>> maxOne, as expected. When I submit, however, it is still null. When
>> the page comes back (after failing validation), the max is now set
>> properly, and simply pressing submit again will succeed.
>>
>> The curious thing is if I do the same thing using Date, the date will
>> be null on pageRender, but will take the value of the date on submit.
>>
>> With String, I have had it go both ways, so I have been bashing my
>> head against the wall trying to figure out what the difference is, to
>> no avail. I know I must be missing something. I've been playing with
>> different object types and translators, but it all just confuses the
>> issue.
>>
>> How do I make sure the setter for a bean validator is called properly
>> (for an Integer) before the validate method on the validator is
>> called? ie How do I ensure the behaviour seen for Date also works for
>> an Integer?
>>
>> Thanks,
>>
>> J
>>
>> PS. I also know this would be easy using js, by overriding
>> renderContribution, but we need server-side too.
>
> -- 
> Julian Wood <[EMAIL PROTECTED]>
>
> Software Engineer
> Teaching & Learning Centre
> University of Calgary
>
> http://tlc.ucalgary.ca
>
>
>


-- 
Andreas Andreou - [EMAIL PROTECTED] - http://andyhot.di.uoa.gr
Tapestry / Tacos developer
Open Source / J2EE Consulting 


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

Reply via email to