You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by Apache Wiki <wi...@apache.org> on 2009/08/06 16:30:33 UTC
[Tapestry Wiki] Update of "CreatingCustomValidators" by SebastianHennebrueder
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Tapestry Wiki" for change notification.
The following page has been changed by SebastianHennebrueder:
http://wiki.apache.org/tapestry/CreatingCustomValidators
------------------------------------------------------------------------------
= Creating a custom validator =
- applies to: Tapestry 4.0
+ Explains how to write and integrate custom validators for Tapestry 4 and 5
+
+ == Tapestry 5.0 ==
+ Author: Sebastian Hennebrueder, Date: August 2009
+ There are 3 steps:
+ 1. Create a validator
+ 1. Create a resource file for validation messages
+ 1. Register both in your application
+
+ === Create a validator ===
+ The following validator check if the value is not 'foo' because foo is really a bad value. It
+ expects a String and no configuration parameter. The {{{MinLength}}} validator uses a configuration parameter to define the minimum length.
+ The validation error messages has the key {{{foo-not-allowed}}}. You might check the source code of the existing validators for further inspiration.
+ {{{
+ import org.apache.tapestry5.validator.AbstractValidator;
+ // ... some more imports here
+ public class FooValidator extends AbstractValidator<Void, String> {
+ public FooValidator() {
+ super(null, String.class, "foo-not-allowed");
+ }
+
+ public void validate(Field field, Void constraintValue, MessageFormatter formatter, String value)
+ throws ValidationException {
+ if ("foo". equals(value))
+ throw new ValidationException(buildMessage(formatter, field, constraintValue));
+ }
+
+ private String buildMessage(MessageFormatter formatter, Field field, Void constraintValue) {
+ return formatter.format(constraintValue, field.getLabel());
+ }
+
+ public void render(Field field, Void constraintValue, MessageFormatter formatter, MarkupWriter writer,
+ FormSupport formSupport) {
+ formSupport.addValidation(field, "foo", buildMessage(formatter, field, constraintValue), null);
+ }
+ }
+ }}}
+ === Create a resource file for validation messages ===
+ File ValidationMessages.properties
+ {{{
+ foo-not-allowed=Foo is not allowed
+ }}}
+
+ === Register both in your application ===
+ A Tapestry application is configured by a AppModule class (See the Tapestry Guide).
+ In the {{{AppModule}}} class add the following methods:
+ {{{
+ public static void contributeValidationMessagesSource(OrderedConfiguration<String> configuration) {
+ configuration.add("Default", "de/laliluna/example/components/ValidationMessages", "before:*");
+ }
+
+ public static void contributeFieldValidatorSource(MappedConfiguration<String, Validator> configuration) {
+ configuration.add("foo", new FooValidator());
+ }
+ }}}
+ That's it.
+
+ == Tapestry 4.0 ==
this is a revised copy of a posing to the users mailing list by Scott F. Walter
== 1. implementing a validator ==
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org