Java EE/Bean Validaton
Bean Validation é a especificação definida pela JSR 349 para definição de restrições e validações de dados para a plataforma Java SE e EE. Sua implementação de referência é o Hibernate Validator.
Demonstração simples
editarSerá demonstrada uma simples validação de campo em página web que restringe o preenchimento de campo para valor não vazio.
Para atingirmos tal objetivo, utilizaremos uma página XHTML
com um h:message
apontando para um h:inputText
vinculado a uma variável String de um Backing Bean. Essa variável será anotada com @NotNull
. Ao submeter o formulário com o campo vazio, uma mensagem de validação será renderizada pelo servidor no componente h:message
.
Para executar os seguintes códigos é necessário que o descritor de implantação web.xml
esteja configurado para que campos vazios sejam convertidos em null
ao invés do comportamento padrão de conversão em Strings vazias.
<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
</context-param>
No Bean abaixo a variável de referência String Nome
é restringida com a anotação @NotNull
para que não seja null
.
package org.wikibooks.pt.javaee;
import javax.enterprise.inject.Model;
import javax.validation.constraints.NotNull;
@Model
public class Usuario {
@NotNull
private String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
O XHTML
abaixo gerará a página Web com o campo que sofrerá a validação.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<head>
<title>Conhecendo as restrições embutidas</title>
</head>
<body>
<h:form id="formulario">
<h:panelGrid columns="3" cellpadding="5">
<h:outputLabel for="nome" value="Nome" />
<h:inputText id="nome" value="#{usuario.nome}" />
<h:message for="nome" />
<h:panelGroup />
<h:commandButton value="Enviar dados" style="float:right" />
</h:panelGrid>
</h:form>
</body>
</html>
Ao clicar no botão Enviar dados com o campo Nome em branco será exibida a mensagem não pode ser nulo.
É importante notar que apesar de a validação não permitir que a variável receba null
, na instanciação do Bean String nome
é inicializada com null
como é padrão na plataforma Java SE. A primeira validação ocorre apenas quando é feita a primeira submissão dos dados do form
.