Does someone already has a solution for this problem outlined below??
I'm using version 3.0.4
Chris Norris CNorris at widen.com writes:
I think this is what you are talking about:
http://thread.gmane.org/gmane.comp.jakarta.tapestry.devel/1632
It seems like they were talking in January 2004 (a year and a half
ago?
Time flies...) about putting it in the next release... But still
hasn't
been done? I'm still trying my page property validator (it'll hold
some
state). That seems a little cleaner than patching Tapestry.
-Chris
-Original Message-
From: robertz at scazdl.org [mailto:robertz at scazdl.org]
Sent: Thursday, June 02, 2005 12:56 PM
To: Tapestry users
Subject: Re: dynamically generated form fields and form level
validation
Harish submitted a patch a /long/ while back that dealt with
the scenario
of how to set a particular field in error when it's rendered
in a loop. He
added a new index property, as I recall. The patch was
never applied,
but if you search the archives for it, you should be able to find
it.
I also know that the patch cannot be cleanly applied to 3.0.3 due to
conflicting changes, so, you may just need to take the patch
and use it as
the basis for your own modifications.
Will this issue be addressed in the new validation stuff Paul
is working
on for 4.0?
Robert
I'm going to try to boil this down to the neccesities. If
it doesn't
make sense, I'll provide some code.
I have a Foreach loop inside of a form. The loop generates
a couple of
sets of FieldLabel/ValidField components*.
The problem is that two of the fields' validation depend on
each other.
If both fields are empty, they both need to be marked as
errored so that
the error markup will be written. If one or the other has
a value, they
are both valid. Can someone point me in the best direction
for this?
My first thought was to record the name of the ValidField
component when
the page was getting the value for it. I would get the
names, something
like validComponentName and validComponentName$0. At form
rewind time,
though, I couldn't figure out how to get the components given
those
names and set them in error. It seems impossible, given
that getName()
will always return the most recent name generated for the
component. I
tried going through the ValidationDelegate's FieldTrackings
and going
through the map returned by getComponents(), neither of which
worked
very well.
My next option was going to be to make a special validator for
this
purpose. It would have to be a page property rather than a
bean so that
the same validator would be used for both ValidFields. All of
these
approaches seem ugly to me. Ideas? Directions?
-Chris
*uses a Defer type component to take care of the off by one
validation
error. the Defer component wraps a FieldLabel and takes in
a block that
contains a ValidField:
protected void renderComponent(IMarkupWriter writer,
IRequestCycle
cycle)
{
IMarkupWriter nested = writer.getNestedWriter();
getBlock().renderBody(nested, cycle);
renderBody(writer, cycle);
nested.close();
}
-
To unsubscribe, e-mail: tapestry-user-unsubscribe at
jakarta.apache.org
For additional commands, e-mail: tapestry-user-help at
jakarta.apache.org
-
To unsubscribe, e-mail: tapestry-user-unsubscribe at
jakarta.apache.org
For additional commands, e-mail: tapestry-user-help at
jakarta.apache.org