Hi Marcus. Here are the classes: Email.java package com.dodo.community.web.validators;
import static org.apache.tapestry.TapestryUtils.quote; import java.util.regex.Pattern; import org.apache.commons.lang.StringUtils; import org.apache.tapestry.Field; import org.apache.tapestry.MarkupWriter; import org.apache.tapestry.PageRenderSupport; import org.apache.tapestry.ValidationException; import org.apache.tapestry.Validator; import org.apache.tapestry.ioc.MessageFormatter; /** * A validator that enforces that the value is a valid email. This validator is not configurable. */ public class Email implements Validator<Void, Object> { public static final String NAME = "email"; private static final String MESSAGE_KEY = "invalid"; private static final Pattern EMAIL_PATTERN = Pattern.compile ("[EMAIL PROTECTED]"); /* (non-Javadoc) * @see org.apache.tapestry.Validator#getConstraintType() */ public Class getConstraintType() { return String.class; } /* (non-Javadoc) * @see org.apache.tapestry.Validator#getMessageKey() */ public String getMessageKey() { return MESSAGE_KEY; } /* (non-Javadoc) * @see org.apache.tapestry.Validator#getValueType() */ public Class getValueType() { return String.class; } /* (non-Javadoc) * @see org.apache.tapestry.Validator#invokeIfBlank() */ public boolean invokeIfBlank() { return true; } /* (non-Javadoc) * @see org.apache.tapestry.Validator#render(org.apache.tapestry.Field, java.lang.Object, org.apache.tapestry.ioc.MessageFormatter, org.apache.tapestry.MarkupWriter, org.apache.tapestry.PageRenderSupport) */ public void render(Field field, Void constraintValue, MessageFormatter formatter, MarkupWriter writer, PageRenderSupport pageRenderSupport) { //TODO: add JS support } /* (non-Javadoc) * @see org.apache.tapestry.Validator#validate(org.apache.tapestry.Field, java.lang.Object, org.apache.tapestry.ioc.MessageFormatter, java.lang.Object ) */ public void validate(Field field, Void constraintValue, MessageFormatter formatter, Object value) throws ValidationException { System.out.println("validate email"); if (value == null || StringUtils.isBlank(value.toString())) throw new ValidationException(buildMessage(formatter, field)); if (!EMAIL_PATTERN.matcher(value.toString()).matches()) throw new ValidationException(buildMessage(formatter, field)); } /** * Builds a localized message * @param formatter * @param field * @return * @author juanm */ private String buildMessage(MessageFormatter formatter, Field field) { return formatter.format(field.getLabel()); } } add in AppModule.java public static void contributeFieldValidatorSource(MappedConfiguration<String, Validator> configuration){ configuration.add(Email.NAME, new Email()); } The validators work for me perfectly when i use them in a page but when i use them in a Component the server side validation only works in the second form. I would really appreciate if u can test to use the validators inside a component. On 5/15/07, Marcus <[EMAIL PROTECTED]> wrote:
Juan, I'm trying, but having a lot of compilation errors. If you post all code added to AppModule.java and Email class, maybe i can help you. Marcus