Java EE/Bean Validaton: diferenças entre revisões

Origem: Wikilivros, livros abertos por um mundo aberto.
[edição verificada][revisão pendente]
Conteúdo apagado Conteúdo adicionado
Faduart (discussão | contribs)
Sem resumo de edição
m <source> -> <syntaxhighlight> (phab:T237267)
 
Linha 8: Linha 8:
Para executar os seguintes códigos é necessário que o descritor de implantação <code>web.xml</code> esteja configurado para que campos vazios sejam convertidos em <code>null</code> ao invés do comportamento padrão de conversão em Strings vazias.
Para executar os seguintes códigos é necessário que o descritor de implantação <code>web.xml</code> esteja configurado para que campos vazios sejam convertidos em <code>null</code> ao invés do comportamento padrão de conversão em Strings vazias.


<source lang="xml">
<syntaxhighlight lang="xml">
<context-param>
<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
<param-value>true</param-value>
</context-param>
</context-param>
</syntaxhighlight>
</source>


No ''Bean'' abaixo a variável de referência <code>String Nome</code> é restringida com a anotação <code>@NotNull</code> para que não seja <code>null</code>.
No ''Bean'' abaixo a variável de referência <code>String Nome</code> é restringida com a anotação <code>@NotNull</code> para que não seja <code>null</code>.


<source lang="Java">
<syntaxhighlight lang="Java">
package org.wikibooks.pt.javaee;
package org.wikibooks.pt.javaee;


Linha 37: Linha 37:
}
}
}
}
</syntaxhighlight>
</source>


O <code>XHTML</code> abaixo gerará a página Web com o campo que sofrerá a validação.
O <code>XHTML</code> abaixo gerará a página Web com o campo que sofrerá a validação.
<source lang="xml">
<syntaxhighlight lang="xml">
<?xml version="1.0" encoding="UTF-8" ?>
<?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">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Linha 60: Linha 60:
</body>
</body>
</html>
</html>
</syntaxhighlight>
</source>


Ao clicar no botão ''Enviar dados'' com o campo ''Nome'' em branco será exibida a mensagem ''não pode ser nulo''.
Ao clicar no botão ''Enviar dados'' com o campo ''Nome'' em branco será exibida a mensagem ''não pode ser nulo''.

Edição atual desde as 15h44min de 16 de abril de 2020

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[editar | editar código-fonte]

Será 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.