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 > >