ok naturally I stumbled over my own solution not 5 mins after posting this.
The solution was to change the bean-validator method to return true public boolean getAcceptsNull() { return true; // was false } The giveaway was when I actually typed something in and then got the validation failure, I stupidly kept trying the empty field case. doh! On 08/12/06, Steve Wells <[EMAIL PROTECTED]> wrote:
A bit of validation grief here (Tapestry 4.0.2), I hope someone can help or provide an example of their own of this (besides the one in Kent Tongs book). I'm trying to create a custom validator that grabs maxLength and required info from the data model. The "Bean" I define as the validator takes 3 parameters which are being set ok when the form is submitted but the * validate* method is not called, and despite trying variations to acheive this it still does not work. Best elaborated in code: Validator Bean: public class DataObjectFieldValidator extends BaseValidator { // *** These fields are populated OK via their setters private String dataObjectName; private String fieldName; private DataContext dataContext; // This does not get called public void validate(IFormComponent iFormComponent, ValidationMessages validationMessages, Object object) throws ValidatorException { if (log.isInfoEnabled()) { log.info("iFormComponent: " + iFormComponent); log.info("object: " + object); } throw new ValidatorException("Why is this not getting here???"); .page spec: <bean name="myValidator" class="com.validator.DataObjectFieldValidator"> <set name="dataContext" value="ognl:dataContext"/> <set name="dataObjectName" value="literal:MyDataObject"/> <set name="fieldName" value="literal:myField"/> </bean> <component id="question" type="TextField"> <binding name="value" value="question"/> <binding name="validators" value="bean:myValidator"/> </component> Java page class: // This will work for built in validators but not the custom bean if (getDelegate().getHasErrors()) { log.info("Entry Errors found: " + getDelegate().getFirstError()); return null; } TIA, Steve