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

Reply via email to