Como imprimir um Calendar com struts?

2 respostas
rodrigovidalxc

Bom dia a todos, estou com problemas quando vou imprimir um objeto Calendar com struts

tenho a minha classe de titulos que tem data de vencimento e data de emissão, eles são do tipo Calendar
preciso fazer o struts imprimir a data formatadinha e bonitinha.

abaixo segue como o struts esta imprimindo em minha pagina quando eu digito ${titulo.dataEmissao} :

java.util.GregorianCalendar[time=1318129200000,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=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2011,MONTH=9,WEEK_OF_YEAR=41,WEEK_OF_MONTH=2,
DAY_OF_MONTH=9,DAY_OF_YEAR=282,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=0,
HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-10800000,DST_OFFSET=0]

o codigo que estou usando para imprimir ele no jsp é esse :

<c:forEach items="${titulos}" var="titulo">
        <tr>
           <td>${titulo.id}</td>
           <td>${titulo.dataEmissao}</td>
           <td>${titulo.dataVencimento}</td>
           <td>${titulo.valorTitulo}</td>
           <td>${titulo.valorSaldo}</td>
        </tr>
        
   </c:forEach>

pessoal agradeço a todos pela atenção espero que possam me ajudar.

2 Respostas

F

Olá rodrigovidalxc!

Para imprimir sua data formatada aconselho você utilizar a tag fmt:formatDate da JSTL. Como proceder:

1º - Importe a taglib fmt da mesma forma que você importou a taglib core:

<% @taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

2º - Na listagem o código deverá ficar da seguinte maneira:

<c:forEach items="${titulos}" var="titulo">  
       <tr>  
          <td>${titulo.id}</td>  
          <td><fmt:formatDate value="${titulo.dataEmissao.time }" pattern="dd/MM/yyyy"/></td>
          <td><fmt:formatDate value="${titulo.dataVencimento.time }" pattern="dd/MM/yyyy"/></td>
          <td>${titulo.valorTitulo}</td>  
          <td>${titulo.valorSaldo}</td>  
       </tr>  
         
</c:forEach>

A tag fmt:formatDate precisa de um value e de um pattern (na verdade ela aceita outros parâmetros, mas estes são suficientes para resolver seu problema). Você ficar atento para o atributo value, pois ele pede um Date e você está trabalhando com Calendar. Por isso foi necessário a invocação do método getTime() de Calendar, para que ele fosse convertido num Date.

Espero ter ajudado. Qualquer dúvida, não hesite em postar!

rodrigovidalxc

Fabricio, muito obrigado
mudei meu codigo segundo você tinha me aconselhado e deu tudo certo .

<table>
   

    <c:forEach items="${titulos}" var="titulo">  
        <tr>
           <td>${titulo.id}</td>
           <td><fmt:formatDate value="${titulo.dataVencimento.time}" pattern="dd/MM/yyyy" /></td>
           <td><fmt:formatDate value="${titulo.dataEmissao.time}"    pattern="dd/MM/yyyy" /></td>
           <td><fmt:formatNumber value="${titulo.valorTitulo}"  pattern="R$#,000.00" /></td>
           <td><fmt:formatNumber value="${titulo.valorSaldo}"   pattern="R$#,000.00" /></td>
        </tr>        
    </c:forEach>
   
   </table>
Criado 16 de outubro de 2011
Ultima resposta 16 de out. de 2011
Respostas 2
Participantes 2