segunda-feira, 14 de maio de 2012

Utilizando o CalendarConverter

1.  Crie um arquivo "Java Class" com o nome CalendarConverter na sua IDE, depois copie o texto da classe a baixo no post.
-- classe CalendarConverter que será copiada dentro do arquivo criado --


import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;


public class CalendarConverter implements Converter {


    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        if (value.isEmpty()) {
            return null;
        }
        Calendar cal = Calendar.getInstance();
        try {
            String sDate = value.replaceAll("[a-z,A-Z, ,-, ,/]+", "");
            String day = sDate.substring(0, 2);
            String month = sDate.substring(2, 4);
            String year = sDate.substring(4);
            cal.set(Integer.parseInt(year), Integer.parseInt(month) - 1, Integer.parseInt(day));
        } catch (Exception ex) {
            throw new ConverterException("Data em formato inválido!");
        }
        return cal;
    }


    public String getAsString(FacesContext context, UIComponent component, Object value) {
        String displayDate = "";
        if (value != null) {
            Calendar calendar = (Calendar) value;
            SimpleDateFormat fSDateFormat = new SimpleDateFormat("dd/MM/yyyy");
            displayDate = fSDateFormat.format(calendar.getTime());
        }
        return displayDate;
    }
}


2.  Copie o texto abaixo dentro do seu faces-config.xml para essa classe ser reconhecida como uma converter.
-- texto que será copiado dentro do faces-config.xml --

<converter>
        <description>Converter para conversao de Calendar (apenas data) em String.</description>
        <converter-id>CalendarConverter</converter-id>
        <converter-class>PACKAGE.CalendarConverter</converter-class>
</converter>


* Lembrando de substituir o PACKAGE pelo o nome do package que contém a classe java que você criou.


3.  Adicione converter="CalendarConverter" nos componentes que deseja.
-- componentes jsf utilizando o converter (retire as aspas)--
<h:inputText value="#{backbean.objeto.nascimento}" id="txtDtNascimento" converter="CalendarConverter"/>


<h:outputLabel value="#{backbean.objeto.nascimento}" id="txtDtNascimento" onkeypress="return mascaraData(this, event)" converter="CalendarConverter"/>

Nenhum comentário:

Postar um comentário