You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by ma...@j-b-s.de on 2008/03/14 10:46:00 UTC

[T5] form validation / new Validator

Hi!

I am trying to move the validation logic definition from the tml back to the "application source code", because my Hibernate domain model drives the  required and length constrains anyway. 
So I wonder why all checks have to be declared by "t:validation" on the "gui" side redundently. The basic idea is to have a ModelValidator which implements the Tapestry Validator interface and assembles other Validator based on the model, more precise the column annotation of the model.

So I wrote the validator and created an instance by my AppModule wihthin a contribute method. Worked fine.

Inside the tml the following code snipped binds the textfield and the new validator:

<input type="text" t:id="userAddressId" t:validate="modelValidation=Address.userId"/>

which means: please take all validations from column "userId" of bean "Address". In my validation class I tried to reuse all existing Tapestry validators by using the "formSupport".

public class ModelValidator ...
{
    ...

    public void render(final Field field, final String constraintValue, final MessageFormatter formatter,
                       final MarkupWriter writer, final FormSupport formSupport)
    {
       // hardcoded for testing. 
       if (constraintValue.equals("Address.userId")) {
          formSupport.addValidation(field, "maxLength", "my maxLength message to build", new Long(10));
          formSupport.addValidation(field, "required", "my required message to build", null);
       }
    }

    ....
} 

Everything works but then I get an error message within the browser complaining "Function Tapestry.Validator.maxLength() does not exist for Field 'userAddressId'. Well, unfortunately that's right :-(
Which further steps are required to create the missing java script code which I guess is created by Tapestry when parsing the t:validation entry  in the tml? Seems Tapestry does a lot of magic behind the scenes and I really do not know where to start.. 

But: In case there is another validation solution to keep the rules inside the application and not the gui I am also interested in.

Thanks in advance

Jens

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org