ok it was:
<contribution configuration-id="tapestry.form.validator.Validators">
       <validator name="PersonDup" configurable="false" class="
org.jfly.demo.edittable.validators.DuplicateValidator "/>
</contribution>

but why the validators component property is empty ??


On 2/20/07, Andrea Chiumenti < [EMAIL PROTECTED]> wrote:

Hello I'm trying to write a custom validator for my demo app.

I have this class:
/*
 * DuplicateValidator.java
 *
 * Created on February 20, 2007, 1:24 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package org.jfly.demo.edittable.validators;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.tapestry.form.IFormComponent ;
import org.apache.tapestry.form.ValidationMessages;
import org.apache.tapestry.form.validator.BaseValidator;
import org.apache.tapestry.valid.ValidationConstraint;
import org.apache.tapestry.valid.ValidatorException ;
import org.jfly.demo.edittable.vo.Person;

/**
 *
 * @author kiuma
 */
public class DuplicateValidator extends BaseValidator {
    public static final String DUPLICATE_PERSON = "duplicate.person ";

    public DuplicateValidator() {
    }

    public DuplicateValidator(String initializer)
    {
        super(initializer);
    }

    /**
     * Does comparison based on the [EMAIL PROTECTED] Number#doubleValue()}.
     */

    public void validate(IFormComponent field, ValidationMessages
messages, Object object)
            throws ValidatorException {
        List value = (List) object;
        List parsedPrs = new ArrayList();
        Iterator iter = value.iterator();
        Person dupPerson = null;
        while (iter.hasNext()) {
            Person person = (Person)iter.next();
            if (parsedPrs.contains(person)) {
                dupPerson = person;
                break;
            } else {
                parsedPrs.add(person);
            }
        }
        if (dupPerson != null)
            throw new ValidatorException(buildMessage(messages, field,
dupPerson));
    }

    private String buildMessage(ValidationMessages messages,
IFormComponent field, Person person)
    {
        return messages.formatValidationMessage(
                getMessage(),
                DUPLICATE_PERSON,
                new Object[]
                { person.getSurname(), person.getName() });
    }


}


--------------------------------------------------------------------------------------
then in hivemodule.xml I have this:

<contribution configuration-id="tapestry.form.validator.Validators">
        <validator name="PersonDup" class="
org.jfly.demo.edittable.validators.DuplicateValidator "/>
    </contribution>


----------------------------------------------------------------------------------------
The interested Component binding is:
<binding name="validators" value="validators:PersonDup"></binding>

The problem is that when I try to render the page I've this message back:

Validator 'name' must be configured in order to be used. The value is
configured by changing 'name' to 'name=value'.



What am I missing ?

Thx,
kiuma

Reply via email to