I have implemented a JSF validator based on this example.
How can I trigger it on keyup event of
?
I am using JSF 2.0 and Richfaces
You can attach ajax listeners to DOM events on any JSF HTML input component by <f:ajax> tag.
<h:inputText id="foo" value="#{bean.foo}">
<f:ajax event="keyup" execute="@this" render="fooMessage" />
<f:validator validatorId="fooValidator" />
</h:inputText>
<h:message id="fooMessage" for="foo" />
The fooValidator
can be just a simple Validator implementation which you register in the faces context by @FacesValidator annotation.
@FacesValidator("fooValidator")
public class FooValidator implements Validator {
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
// ...
if (invalid) {
throw new ValidatorException(new FacesMessage("Fail!"));
}
}
}
In RichFaces it's not much different. There's only the <a4j:ajax>
tag which is basically just <f:ajax>
on steroids. But it does not really provide additional benefits in this particular case. See also Is there any difference between f:ajax and a4j:ajax?