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