You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Will Norris <wi...@willnorris.com> on 2007/12/03 21:22:54 UTC

T5 - custom component validation

As usual, I'm sure I'm just missing something here... I can't quite  
figure how to do validation of a custom component.  I basically want  
to do what is described here[0] about using onSuccess(), but in a  
component rather than a page.  I basically have a PasswordForm  
component which itself has a form, and that needs to verify that the  
"password" and "confirm password" fields are equal.  I'm able to do  
this validation in PasswordForm.onSuccess() without any trouble....

String onSuccess() {
     if (!password.equals(password2)) {
         log.error("Passwords don't match");
         form.recordError("Passwords don't match");
         return null;
     }
}

but how do I notify the containing page that there is an error?   
Currently, the page just moves right along after logging my error  
message.  I've tried throwing a ValidationException from onSuccess(),  
but that ends up being displayed to the user with a stacktrace and  
all.  I even looked at the standard Form component's onAction method  
and copied some stuff from there (specifically looking at  
_resources.triggerEvent(FAILURE, context, handler)) but that didn't  
help at all.  I separately tried extending AbstractField and  
overriding processSubmission() as suggested in one post, but that  
didn't do much for me.

Any suggestions would be much appreciated.

[0]: http://tapestry.apache.org/tapestry5/tapestry-core/guide/validation.html

-will

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: T5 - custom component validation

Posted by Will Norris <wi...@willnorris.com>.
worked perfectly, thanks.  see, I knew I was missing *something* :)

-will

On Dec 3, 2007, at 1:41 PM, Filip S. Adamsen wrote:

> Try moving your validation logic to onValidate. If any errors are  
> added to the form in this method Tapestry won't call onSuccess but  
> display the page again with your errors shown in the Errors component.
>
> -Filip
>
> Will Norris skrev:
>> As usual, I'm sure I'm just missing something here... I can't quite  
>> figure how to do validation of a custom component.  I basically  
>> want to do what is described here[0] about using onSuccess(), but  
>> in a component rather than a page.  I basically have a PasswordForm  
>> component which itself has a form, and that needs to verify that  
>> the "password" and "confirm password" fields are equal.  I'm able  
>> to do this validation in PasswordForm.onSuccess() without any  
>> trouble....
>> String onSuccess() {
>>    if (!password.equals(password2)) {
>>        log.error("Passwords don't match");
>>        form.recordError("Passwords don't match");
>>        return null;
>>    }
>> }
>> but how do I notify the containing page that there is an error?   
>> Currently, the page just moves right along after logging my error  
>> message.  I've tried throwing a ValidationException from  
>> onSuccess(), but that ends up being displayed to the user with a  
>> stacktrace and all.  I even looked at the standard Form component's  
>> onAction method and copied some stuff from there (specifically  
>> looking at _resources.triggerEvent(FAILURE, context, handler)) but  
>> that didn't help at all.  I separately tried extending  
>> AbstractField and overriding processSubmission() as suggested in  
>> one post, but that didn't do much for me.
>> Any suggestions would be much appreciated.
>> [0]: http://tapestry.apache.org/tapestry5/tapestry-core/guide/validation.html
>> -will
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: T5 - custom component validation

Posted by "Filip S. Adamsen" <fs...@fsadev.com>.
Try moving your validation logic to onValidate. If any errors are added 
to the form in this method Tapestry won't call onSuccess but display the 
page again with your errors shown in the Errors component.

-Filip

Will Norris skrev:
> As usual, I'm sure I'm just missing something here... I can't quite 
> figure how to do validation of a custom component.  I basically want to 
> do what is described here[0] about using onSuccess(), but in a component 
> rather than a page.  I basically have a PasswordForm component which 
> itself has a form, and that needs to verify that the "password" and 
> "confirm password" fields are equal.  I'm able to do this validation in 
> PasswordForm.onSuccess() without any trouble....
> 
> String onSuccess() {
>     if (!password.equals(password2)) {
>         log.error("Passwords don't match");
>         form.recordError("Passwords don't match");
>         return null;
>     }
> }
> 
> but how do I notify the containing page that there is an error?  
> Currently, the page just moves right along after logging my error 
> message.  I've tried throwing a ValidationException from onSuccess(), 
> but that ends up being displayed to the user with a stacktrace and all.  
> I even looked at the standard Form component's onAction method and 
> copied some stuff from there (specifically looking at 
> _resources.triggerEvent(FAILURE, context, handler)) but that didn't help 
> at all.  I separately tried extending AbstractField and overriding 
> processSubmission() as suggested in one post, but that didn't do much 
> for me.
> 
> Any suggestions would be much appreciated.
> 
> [0]: 
> http://tapestry.apache.org/tapestry5/tapestry-core/guide/validation.html
> 
> -will
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org