there is no difference between listeners that return X or Y - it only
changes what will happen next...
BUT - notice that listener code is executed regardless of validtion
errors. If you want a listener to execute only when no errors are there
you must add a small
if (getValidationDelegate().getHasErrors()) return null;
at the beginning...
cheers,
ROn
Drew McAuliffe wrote:
Looks like I answered my own question. I set up a property on my page to
hold a ValidationDelegate (using "initial-value"; I found this easier to
work with in code than accessing a bean, though I could use a bean if I have
my own validation delegate that needs props set). I set the prop in the page
spec, then point my form at it.
My method now looks something like this:
public ILink save()
{
if (getDelegate() != null && getDelegate().getHasErrors())
return null
// normal save code
return someILinkValue;
}
That seems to work pretty well and should be guaranteed to pick any
validation errors without a hassle.
I still am curious, though: do listeners that don't return ILink
automatically do this kind of check anyway?
On 2/17/06, Drew McAuliffe <[EMAIL PROTECTED]> wrote:
But I shouldn't even get to my new page unless my listener code has
executed, which shouldn't be the case if validation fails, right? Otherwise,
I'm executing a save or add and then getting back to the validation error.
The problem isn't with the fact that redirection loses a delegate, I don't
think; there's no way around losing a request-scoped variable after a
redirect without storing it somewhere else. The problem, I think, is that
when returning ILink, something about validation isn't getting picked up
that circumvents the listener code, which I believe it does when you have a
void return on your listener.
On 2/17/06, Ron Piterman <[EMAIL PROTECTED]> wrote:
I would think you loose your validation delegate on the way.
The new activated page has a new delegate, without any errors.
Cheers,
ROn
Drew McAuliffe wrote:
I am attempting my first go at the new Tapestry validation and seem to
have
run into a problem. The vast majority of the pages in my app have
listeners
that return a valid ILink, instead of a void signature. According to
the
tapestry docs, this is to do a redirect after submit, which is what I
want
(the users insist upon the redirect-after-post pattern, to avoid
browser
refresh issues).
The problem is, if there's a validation error, it won't get caught
when
returning an ILink. My listener ends up processing as if nothing was
wrong
when there's a validation error. If I replace my listener code with a
simple
"return null;", then if there's a validation error, it will be marked
appropriately.
Is there a way built into the validation framework to handle it?
Though I
may be missing something (and I've checked all of the docs I could
find) It
seems like it doesn't work when a listener returns ILink. Because of
popularity of the redirect-after-post pattern, I would imagine that
this
would not be an "edge" case. Maybe there's some kind of usage of
delegates
or listeners or something that I'm missing?
Thanks,
Drew
---------------------------------------------------------------------
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]