Back-End

6 fev, 2013

Criando validadores personalizados no JSF

Publicidade
Cortando as introduções e indo direto ao assunto, no JSF você pode trabalhar com  dois grupos de validadores de dados: os existentes (que são fornecidos pelo JSF) e os personalizados (que são os criados por você). Os existentes validam algumas características de dados, tais como: tamanho de campos, limites, entre outras. Mas, como é de se esperar, várias características não são abrangidas. Em vista disso, a possibilidade de criar validadores personalizados é uma boa saída fornecida pelo JSF.

validador-jsf

Criando um validador

Criar um validador em JSF é simples. Para tal, basta sobrescrever o método validade(), por meio de uma classe que estenda a interface javax.faces.validator.Validator, e registrá-lo no contexto do JSF. Vejamos um exemplo de validação de e-mail.

1. Criando o validador

public void validateEmail(FacesContext context, UIComponent toValidate, Object value) {
 String email = (String) value;
 if (email.indexOf('@') == -1) {
 ((UIInput) toValidate).setValid(false);
 FacesMessage message = new FacesMessage("Invalid Email");
 context.addMessage(toValidate.getClientId(context), message);
 }
 }

2. Registrando o validador

Para registrar o validador, basta indicá-lo no Faces-config, conforme o exemplo abaixo:

<validator>
 <h:inputText id="email" value="#Bean.user.email}"
 validator="#{validateEmail}" required="true"/>
<validator-class>
 </validator-class>
</validator>

3. Usando o validador

Tendo criado e registrado o validador, basta usa-lo por meio do marcador <f:validator …/>:

<h:inputtext id="email" required="true" validator="#{validateEmail}" value="#Bean.user.email}">
</h:inputtext>