如何在keyup事件上调用JSF Validator?

时间:2012-01-18 03:07:03

标签: validation jsf richfaces

我正在使用JSF 2.0和Richfaces 4.1.0 Final

虽然存在一些类似的问题,如Link
我想在keyup事件的inputtext框上实现JSF Validator。请问任何机构都可以指出一些有用的教程吗?

1 个答案:

答案 0 :(得分:4)

您可以通过<f:ajax>标记将Ajax侦听器附加到任何JSF HTML输入组件上的DOM事件。

<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" />

fooValidator可以只是一个简单的Validator实现,您可以通过@FacesValidator注释在faces上下文中注册。

@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!"));
        }
    }

}

另见:

在RichFaces中,它并没有太大的不同。只有<a4j:ajax>标签在类固醇上基本上只是<f:ajax>。但它并没有真正为这个特定的案例提供额外的好处。另请参阅Is there any difference between f:ajax and a4j:ajax?