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”
xmlns:h=”http://xmlns.jcp.org/jsf/html”
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