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]