Hi Kris,

Thanks,

I'm nearly there but not yet complete. In my component I'm able to build
a FieldValidator but I cannot get it to use the @Validate annotation
from the containing class (actually a page).

So what I want is this (pseudo code)

SomePage {
  @Component(id="someId")
  @Validate("required")   <----- how can I use this annotation from my
component??
  private MyComponent myComponent;
}

MyComponent {

 @Parameter(defaultPrefix = BindingConstants.VALIDATE)
 @Property
 private FieldValidator<?> fieldValidator;

  @Component(id = "field", parameters =
{"validate=prop:fieldValidator"})
  private TextField field;
}

When I build the FieldValidator I need to give it a AnnotationProvider
that is going to 'find' the @Validate annotation but how can I get
access to the @Validate annotation from the parent (ie the page)?

As a workaround I have created a FieldValidator builder that builds a
FieldValidator using a string so I can set the validator in my page
like: 

SomePage {
  @Component(id="someId", parameters =
{"validate=required,minlength=4"})
  private MyComponent myComponent;
}

But that's a bit clumsy.

Any idea?

Martijn

On Thu, 2008-06-26 at 10:28 +0200, Kristian Marinkovic wrote:
> hi martijn,
> 
> the validator parameter of the textfield requires a FieldValidator.
> you can obtain a FieldValidator through the FieldValidatorSource
> service. 
> 
> take a look at the PropertyEditor and the PropertyEditBlock class 
> to see how FieldValidators are applied programmatically. 
>  
> g,
> kris
> 
> 
> 
> 
> 
> "Martijn Brinkers (List)" <[EMAIL PROTECTED]> 
> 26.06.2008 09:16
> Bitte antworten an
> "Tapestry users" <users@tapestry.apache.org>
> 
> 
> An
> Tapestry users <users@tapestry.apache.org>
> Kopie
> 
> Thema
> How to inherit or have a dynamic validate
> 
> 
> 
> 
> 
> 
> 
> I have a component containing a TextField. The TextField should support
> validation. For example:
> 
> @Component(id = "field", parameters = {"validate=required,minlength=3"})
> private TextField field;
> 
> But, I would like to make it possible to override the validation. So for
> example:
> 
> 
> @Component(id = "field", parameters =
> {"validate=prop:getTheValidationValue"})
> 
> or from the tml file
> 
> <input type="text" t:id = "field" t:type="TextField" value="value"
> disabled="checked" t:validate="inherit:validate"/>
> 
> But I have not yet succeeded.
> 
> Any tips?
> 
> Martijn
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to