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