JSF – Validando Data Inicial e Data Final

Ultimamente tenho percebido na lista JavaSF a dificuldade entre os desenvolvedores JSF iniciantes em validar dois campos contendo datas onde a data inicial deve ser menor que a data final.

Neste post irei demonstrar como utilizar um validador no Managed Bean sem a necessidade de registrá-lo no faces-config.xml.

Estrutura do projeto

Códigos

MB.java

public class MB {

private Date dataInicio;

private Date dataFim;

public void validateBeginDate(FacesContext context, UIComponent component, Object value) {

dataInicio = (Date) value;

}

public void validateEndDate(FacesContext context, UIComponent component, Object value) {

dataFim = (Date) value;

if (! dataFim.after(dataInicio)) {

throw new ValidatorException(new FacesMessage(“Data final maior que data inicial”));

} else {

throw new ValidatorException(new FacesMessage(“Datas OK”));

}

}

}

pagina.jsp

<%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>

<%@ taglib prefix=“f” uri=http://java.sun.com/jsf/core&#8221;%>

<%@ taglib prefix=“h” uri=http://java.sun.com/jsf/html&#8221;%>

<%@ taglib prefix=“rich” uri=http://richfaces.ajax4jsf.org/rich&#8221;%>

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” http://www.w3.org/TR/html4/loose.dtd&#8221;>

<html>

<head>

<meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”>

<title>Validando datas</title>

</head>

<body>

<f:view>

<h:form>

<h:messages/>

<h:panelGrid columns=“3”>

<h:outputText id=“dataInicio” value=“Data inicio” />

<rich:calendar id=“inicio” style=“width:30%;” validator=“#{MB.validateBeginDate}”>

<f:convertDateTime type=“date” pattern=“dd/MM/yyyy”/>

</rich:calendar>

<f:verbatim><br/></f:verbatim>

<h:outputText id=“dataFim” value=“Data fim” />

<rich:calendar id=“fim” style=“width:30%;” validator=“#{MB.validateEndDate}”>

<f:convertDateTime type=“date” pattern=“dd/MM/yyyy”/>

</rich:calendar>

</h:panelGrid>

<h:commandButton value=“Validar”/>

</h:form>

</f:view>

</body>

</html>

faces-config.xml

<?xml version=“1.0” encoding=“UTF-8”?>

<faces-config

xmlns=http://java.sun.com/xml/ns/javaee&#8221;

xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance&#8221;

xsi:schemaLocation=http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd&#8221;

version=“1.2”>

<managed-bean>

<managed-bean-name>MB</managed-bean-name>

<managed-bean-class>br.com.serjaum.mb.MB</managed-bean-class>

<managed-bean-scope>request</managed-bean-scope>

</managed-bean>

</faces-config>

Importando o projeto

  1. Baixe o projeto atualizado >>aqui<<;
  2. Descompacte o projeto no seu workspace;
  3. No Eclipse vá em: File –> Import –> General – Existing Projects into Workspace –> Next –> Selecione o projeto descompactado no workspace –> Finish.



Resultado



3 Comentários on “JSF – Validando Data Inicial e Data Final”

  1. Julio Pereira disse:

    Ótimo post! Já está com quase um ano e só agora fui achar!

    Mas parece que o MD5 já foi quebrado!
    O SHA-256 e SHA-512 ainda estão de pé!
    Abraço!

  2. Leandro disse:

    Ótimo post!!! Assim como nosso colega de cima disse demoramos mas estamos satisfeito com seu post, muito bom mesmo me ajudou muito!!!!


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s