Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Como fazer a data ser mostrada corretamente para o Usuario

Estou trabalhando com datas porém na minha dateTable quando irei mostrar para o usuário esta vindo o nome do pacote útil onde fica a classe Calendar, só aconteceu com a data.

Esta assim:

<p:column headerText="Data Aluguel" sortBy="#{aluguel.dataAluguel}" filterBy="#{aluguel.dataAluguel}">
                <h:outputText value="#{aluguel.dataAluguel}" />
            </p:column>

            <p:column headerText="Data Devolução" sortBy="#{aluguel.dataDevolucao}" filterBy="#{aluguel.dataDevolucao}">
                <h:outputText value="#{aluguel.dataDevolucao}" />
            </p:column>
6 respostas

Olá João,

É preciso formatar o modo como será exibido a data do objeto Calendar. Para isso você pode usar a biblioteca core do JSF com a tag convertDateTime , exemplo:

<h:outputText value="#{aluguel.dataAluguel}" >
            <f:convertDateTime pattern="dd/MM/yyyy"/>
</h:outputText>

A data pode ser exibida de diversas formas, e você especifica isso no atributo pattern dessa tag.

Lembre-se de importar essa taglib no começo da sua tag html:

<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">

Sendo assim a alteração necessária no teu código seria:

<p:column headerText="Data Aluguel" sortBy="#{aluguel.dataAluguel}" filterBy="#{aluguel.dataAluguel}">
                <h:outputText value="#{aluguel.dataAluguel}" >
            <f:convertDateTime pattern="dd/MM/yyyy"/>
        </h:outputText>
            </p:column>

            <p:column headerText="Data Devolução" sortBy="#{aluguel.dataDevolucao}" filterBy="#{aluguel.dataDevolucao}">
                <h:outputText value="#{aluguel.dataDevolucao}" >
            <f:convertDateTime pattern="dd/MM/yyyy"/>
                </h:outputText>    
            </p:column>

Olá Arthur, fiz isso porém agora ele apresenta um outro erro dizendo que não foi possível. Obs: O core ja estava importado

Exception

javax.servlet.ServletException: formListagem:tabela:0:j_idt24: não foi possível converter 'java.util.GregorianCalendar[time=1506740400000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/Sao_Paulo",offset=-10800000,dstSavings=3600000,useDaylight=true,transitions=129,lastRule=java.util.SimpleTimeZone[id=America/Sao_Paulo,offset=-10800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=9,startDay=15,startDayOfWeek=1,startTime=0,startTimeMode=0,endMode=3,endMonth=1,endDay=15,endDayOfWeek=1,endTime=0,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2017,MONTH=8,WEEK_OF_YEAR=39,WEEK_OF_MONTH=5,DAY_OF_MONTH=30,DAY_OF_YEAR=273,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=5,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-10800000,DST_OFFSET=0]' em uma sequência.
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Ah tem mais um detalhe que passou desapercebido. O converter não é pro seu objeto Calendar diretamente é para o time. Sendo assim basta corrigir o seu codigo da seguinte forma:

<p:column headerText="Data Aluguel" sortBy="#{aluguel.dataAluguel}" filterBy="#{aluguel.dataAluguel}">
                <h:outputText value="#{aluguel.dataAluguel.time}" >
            <f:convertDateTime pattern="dd/MM/yyyy"/>
        </h:outputText>
            </p:column>

            <p:column headerText="Data Devolução" sortBy="#{aluguel.dataDevolucao}" filterBy="#{aluguel.dataDevolucao}">
                <h:outputText value="#{aluguel.dataDevolucao.time}" >
            <f:convertDateTime pattern="dd/MM/yyyy"/>
                </h:outputText>    
            </p:column>

Tem que verificar se o sortBy e filterBy não precisa passar o .timetambém.

Sim, deu certo. Porém na tela esta aparecendo todos os dados inclusive horário, esta assim:

Mon Oct 02 00:00:00 BRT 2017

Teria como filtrar tudo isso para deixar como apenas data? Pois meu Calendar está apenas como DATE.

solução!

Isso é o que iria aparecer caso o f:convertDateTime não estivesse sendo aplicado. Verifica se você importou corretamente a taglib f, com a url que eu coloquei lá em cima.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software