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>