Maybe it would be simpler to use a mixin, one that calls back to 
showValidationMessage()? Yes, please post it.

On 23/06/2010, at 3:49 AM, Katia Aresti Gonzalez wrote:

> I have an example with a mixin ... it's in not very very simple, but i can
> simplify the mixin for your example... ^_^
> 
> 
> 2010/6/20 Geoff Callender <geoff.callender.jumpst...@gmail.com>
> 
>> Surely someone has an example of this?
>> 
>> On 18/06/2010, at 12:51 PM, Geoff Callender wrote:
>> 
>>> Thanks, Thiago, but it lacks AJAX. I'd like the validator to behave like
>> any other client-side validator except that it asks the server to help, eg.
>> to validate that a name has not already been used.
>>> 
>>> Geoff
>>> 
>>> On 18/06/2010, at 12:24 PM, Thiago H. de Paula Figueiredo wrote:
>>> 
>>>> On Thu, 17 Jun 2010 22:20:45 -0300, Geoff Callender <
>> geoff.callender.jumpst...@gmail.com> wrote:
>>>> 
>>>>> Hi all,
>>>> 
>>>> Hi!
>>>> 
>>>> This is an example of a RGB string validator that I created for my
>> Tapestry courses (basic and advanced):
>>>> 
>>>> public class RGBValidator extends AbstractValidator<Void, String> {
>>>> 
>>>>     final private static Pattern PATTERN =
>>>>             Pattern.compile("[0-9A-Fa-f]{6}");
>>>> 
>>>>     final private RenderSupport renderSupport;
>>>> 
>>>>     final private Asset javascript;
>>>> 
>>>>     public RGBValidator(
>>>>                     AssetSource assetSource, RenderSupport
>> renderSupport) {
>>>> 
>>>>             super(null, String.class, "rgb-validation");
>>>>             this.renderSupport = renderSupport;
>>>>             javascript = assetSource.getClasspathAsset(
>>>> 
>> "br/com/arsmachina/cursotapestry/validacao/rgb.js");
>>>> 
>>>>     }
>>>> 
>>>>     public void render(Field field, Void constraintValue,
>>>>                     MessageFormatter formatter, MarkupWriter writer,
>>>>                     FormSupport formSupport) {
>>>> 
>>>>             String message = buildMessage(field, formatter);
>>>> 
>>>>             // adds JavaScript validation
>>>>             formSupport.addValidation(field, "rgb", message, null);
>>>> 
>>>>             // includes rgb.js in the page
>>>>             renderSupport.addScriptLink(javascript);
>>>> 
>>>>             // adds a hint to the user. just an example of generating
>>>>             // HTML inside a validator.
>>>>             writer.element("span", "class", "hint");
>>>>             writer.write("Must be filled with 6 digits or letters from
>> A to F.");
>>>>             writer.end();
>>>> 
>>>>     }
>>>> 
>>>>     @Override
>>>>     public void validate(Field field, Void constraintValue,
>>>>                     MessageFormatter formatter, String value)
>>>>                     throws ValidationException {
>>>> 
>>>>             if (PATTERN.matcher(value).matches() == false) {
>>>>                     String message = buildMessage(field, formatter);
>>>>                     throw new ValidationException(mensagem);
>>>>             }
>>>> 
>>>>     }
>>>> 
>>>>     private String buildMesssage(Field field, MessageFormatter
>> formatter) {
>>>>             return formatter.format(field.getLabel());
>>>>     }
>>>> 
>>>> }
>>>> 
>>>> rgb.js:
>>>> 
>>>> Tapestry.Validator.rgb = function(field, message) {
>>>>     var regexp = /[0-9A-F]{6}/i;
>>>>     field.addValidator(function(value) {
>>>>             if (regexp.test(value) == false && value.length > 0) {
>>>>                     throw message;
>>>>             }
>>>>     });
>>>> };
>>>> 
>>>> --
>>>> Thiago H. de Paula Figueiredo
>>>> Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,
>> and instructor
>>>> Owner, Ars Machina Tecnologia da Informação Ltda.
>>>> http://www.arsmachina.com.br
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>>>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>>> 
>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> For additional commands, e-mail: users-h...@tapestry.apache.org
>> 
>> 


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

Reply via email to