Conversores, Listeners e validadores – Parte II

Converters padrão mais usados

Da tabela dos conversores padrão do JSF, dois, são de uso muito frequente e serão apresentados nesta parte do livro com maior realce. Trata-se do DatetimeConverter e do NumberConverter.

DatetimeConverter – tag f:convertDateTime

O DatetimeConverter é usado para converter o valor de um componente para o tipo java.util.Date e no formato definido. Também acuta como um validador de um formato de data.
Este conversor aplica-se tanto aos componentes de entrada quanto aos de saída.
Esta tag tem vários atributos que permitem especificar o formato e o tipo de data.
A tabela a seguir apresenta os atributos, os tipos de valor que podem receber e uma breve descrição.

Atributo Tipo Descrição
binding DateTimeConverter Usado para ligar o converter à propriedade do managed bean
dateStyle String Define o formato ou estilo de formatação da data, como especificado pelo objeto java.text.DateFormat, de uma data ou parte da data de uma String num formato convertível para data. É aplicado apenas se o tipo for uma data ou parte e se o pattern  não foi definido.

Os valores  válidos são: default, short, médium, long, e full. Se não for especificado num dos valores é usado o default.

for String É usado com componentes compostos. Faz referencia a um dos objetos aninhados no componente e referenciado pelo seu id
locale String or Locale É usado para especificar os estilo da data e hora durante o parsing. Informa o loca de exibição da data.  Por padrão é usado o valor retornado pelo FacesContext.getViewRoot().getLocale.

Se for fornecida uma String, esta deverá representar o código do pais de acordo com a norma ISO-639.

pattern String Permite definir um formato personalizado da data ou hora.  Se este atributo  for especificado os atributos dateStyle, timesStyle, e type são ignorados.
timeStyle String Define o formato ou estilo de formatação da hora, como especificado pelo objeto java.text.DateFormat  para a hora ou parte da hora de uma string. É aplicado apenas se o tipo for time e o pattern não estiver definido. Os valores válidos são: default, short, médium, long, e full. Se nenhum valor for especificado, o valor default sera usado.
timeZone String or TimeZone O atributo Time zone  é usado para definir e mostrar os valores dos fusos horários .  Por padrão é usado o GMT
type String Permite especificar se o valor da String vai conter uma data, uma hora, ou ambos. Os valores válidos são: date, time, ou ambos. Se nenhum valor for especificado, o valor date será usado.

 

 

A seguir alguns exemplos de uso.

Para usar o converter DateTimeConverter, basta incluir a tag f:converterDateTime dentro do componente vinculado a um atributo do tipo java.utilDate.
Exemplo

<h:outputText value=”#{meuBean.data}”>
<f:convertDateTime type=”date” dateStyle=”medium”/>
</h:outputText>

Ou
<h:outputText value=”#{dateTimeBean.currentDate}”>
<f:convertDateTime dateStyle=”full” pattern=”yyyy.MM.dd ‘at’ HH:mm:ss z”/>
</h:outputText>

Aplicação de exemplo
Será criada um pagina que usando o atributo data dataNascimento da entidade Participante,  mostra os dados nos mais diversos formatos disponibilizados pela tag f:convertDateTime

<?xml version=’1.0′ encoding=’UTF-8′ ?><!DOCTYPE html>

<html xmlns=”http://www.w3.org/1999/xhtml”&nbsp;  

  xmlns:h=”http://xmlns.jcp.org/jsf/html”&nbsp;  

  xmlns:f=http://xmlns.jcp.org/jsf/core>

<h:head>    <title>Conversor padrão de Data e hora</title></h:head>

<h:body>
    <h2>Exemplo de uso do Conversor f:convertDateTime </h2>
  <h:panelGrid columns=”1″>
            Formato [type=”date” e ” dateStyle=”medium”] : 
            <h:outputText value=”#{participanteMBean.participante.dataNascimento}”>                <f:convertDateTime type=”date” dateStyle=”medium”/> 

         </h:outputText>

            Formato [type=”date” e dateStyle=”full”] : 
            <h:outputText value=”#{participanteMBean.participante.dataNascimento}”>                <f:convertDateTime type=”date” dateStyle=”full”/>       

    </h:outputText>

            Formato [type=”time” e dateStyle=”full”] : 

            <h:outputText value=”#{participanteMBean.participante.dataNascimento}”>                <f:convertDateTime type=”time” dateStyle=”full”/>         

  </h:outputText>
            Formato [type=”date” e pattern=”dd/mm/yyyy”] : 
            <h:outputText value=”#{participanteMBean.participante.dataNascimento}”>                <f:convertDateTime type=”date” pattern=”dd/mm/yyyy”/>       

    </h:outputText>

            Formato [dateStyle=”full” e pattern=”yyyy-mm-dd”] :       

    <h:outputText value=”#{participanteMBean.participante.dataNascimento}”>                <f:convertDateTime dateStyle=”full” pattern=”yyyy-mm-dd”/>     

      </h:outputText>

 Formato [dateStyle=”full” e pattern=”yyyy.MM.dd ‘at’ HH:mm:ss z”] :
            <h:outputText value=”#{participanteMBean.participante.dataNascimento}”>                <f:convertDateTime dateStyle=”full” pattern=”yyyy.MM.dd ‘at’ HH:mm:ss z”/>            </h:outputText>

Formato [dateStyle=”full” e pattern=”h:mm a”] :
            <h:outputText value=”#{participanteMBean.participante.dataNascimento}”>                <f:convertDateTime dateStyle=”full” pattern=”h:mm a”/>         

  </h:outputText>         

  Formato [dateStyle=”long”, timeZone=”EST” e type=”both”] :
            <h:outputText value=”#{participanteMBean.participante.dataNascimento}”>                <f:convertDateTime dateStyle=”long” timeZone=”EST” type=”both”/>            </h:outputText>

Formato [locale=”pt” timeStyle=”long” type=”both” dateStyle=”full”] :            <h:outputText value=”#{participanteMBean.participante.dataNascimento}”>                <f:convertDateTime locale=”pt” timeStyle=”long” type=”both” dateStyle=”full”/>            </h:outputText>

Formato [locale=”us” timeStyle=”short” type=”both” dateStyle=”full”] :
            <h:outputText value=”#{participanteMBean.participante.dataNascimento}”>                <f:convertDateTime locale=”us” timeStyle=”short” type=”both” dateStyle=”full”/>            </h:outputText>

        </h:panelGrid>     

    </h:body></html>

Output
Formato [type=”date” e ” dateStyle=”medium”] :5-set-2017
Formato [type=”date” e dateStyle=”full”] :terça 5 setembro 2017
Formato [type=”time” e dateStyle=”full”] :0.00.00
Formato [type=”date” e pattern=”dd/MM/yyyy”] :05/09/2017
Formato [dateStyle=”full” e pattern=”yyyy-MM-dd”] :2017-09-05
Formato [dateStyle=”full” e pattern=”yyyy.MM.dd ‘at’ HH:mm:ss z”] :2017.09.05 at 00:00:00 CEST
Formato [dateStyle=”full” e pattern=”h:mm a”] :12:00 AM
Formato [dateStyle=”long”, timeZone=”EST” e type=”both”] :4 setembro 2017 17.00.00
Formato [locale=”pt” timeStyle=”long” type=”both” dateStyle=”full”] :Terça-feira, 5 de Setembro de 2017 0:00:00 CEST
Formato [locale=”us” timeStyle=”short” type=”both” dateStyle=”full”] :Tuesday, September 5, 2017 12:00 AM

 

Deixe um comentário