A tecnologia JavaServer Faces possui algumas funcionalidades que visam facilitar a validação de campos e economizar tempo do desenvolvedor na criação da interface com o usuário. As tags de mensagens chamadas Message e Messages tem como objetivo exibir mensagens para os elementos de uma pagina web. A tag Messages exibe mensagens de uma vez para todos os elementos da página, enquanto a tag Message exibe mensagem para um elemento especificado pelo seu identificador.
Messages: https://javaserverfaces.java.net/docs/2.0/pdldocs/facelets/h/messages.html
Validando Campos Obrigatórios
1 – Crie um projeto web dinâmico JSF, e utilize os códigos abaixo para a pagina xhtml e para o Managed Bean. Verifique na imagem abaixo que utilizamos a tag Message dentro do PanelGrid para cada elemento de validação requerida:
2 – Assim que executamos a aplicação e tentamos enviar os campos com valores nulos as mensagens de validação são exibidas para cada campo que não atende sua requisição:
3 – Assim que os valores são inseridos nos campos de preenchimento obrigatório, os dados podem ser enviados com sucesso:
Exemplo:
Neste exemplo utilizamos as funcionalidades do JSF para validar campos obrigatórios e exibir mensagens para cada campo.
Managed Bean
package org.desenvolvimento.aberto;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
// Define decoradores
@ManagedBean(name = "Participante")
@RequestScoped
public class Participante {
// Define atributos privados
private long id;
private String nome;
private String sobrenome;
private String cargo;
private double salario;
// Metodos Getter e Setter
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSobrenome() {
return sobrenome;
}
public void setSobrenome(String sobrenome) {
this.sobrenome = sobrenome;
}
public String getCargo() {
return cargo;
}
public void setCargo(String cargo) {
this.cargo = cargo;
}
public double getSalario() {
return salario;
}
public void setSalario(double salario) {
this.salario = salario;
}
// Método de Ação (clique do botão)
public String Acao() {
System.out.println("Clique do botão");
System.out.println("Nome: " + this.getNome() + "\n " +
"Sobrenome: " + this.getSobrenome() + "\n " +
"Cargo: " + this.getCargo() + "\n " +
"Salário: " + this.getSalario() + "\n ");
return null;
}
}
JSF – xhtml
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<f:loadBundle basename="resources.application" var="msg" />
<head>
<title><h:outputText value="#{msg.welcomeTitle}" /></title>
</head>
<h:body>
<h2>JSF - Desenvolvimento Aberto - Managed Beans -</h2>
<h3>
<h:outputText id="lnome" value="Validação - Cadastros:" />
</h3>
<h:form>
<h:panelGrid columns="3" cellpadding="2px">
<h:outputText id="lnome" value="Nome:" />
<h:inputText id="tnome" value="#{Participante.nome}" size="30"
required="true" label="Nome" />
<h:message for="tnome" style="color:red" />
<h:outputText id="lsobrenome" value="Sobrenome:" />
<h:inputText id="tsobrenome" value="#{Participante.sobrenome}"
size="40" required="true" label="Sobrenome" />
<h:message for="tsobrenome" style="color:red" />
<h:outputText id="lcargo" value="Cargo" />
<h:inputText id="tcargo" value="#{Participante.cargo}" size="25"
required="true" label="Cargo" />
<h:message for="tcargo" style="color:red" />
<h:outputText id="lsalario" value="Salário" />
<h:inputText id="tsalario" value="#{Participante.salario}"
required="true" label="Salário" />
<h:message for="tsalario" style="color:red" />
</h:panelGrid>
<br />
<h:commandButton id="botao" action="#{Participante.Acao}"
value="Enviar Dados" />
</h:form>
</h:body>
</html>




