Tag customizada para imprimir datas

O título do tópico não ficou bom, vou tentar explicar o problema. Estou criando uma taglib para facilitar a criação das telas do sistema onde trabalho. Uma das tags deve, entre outras coisas, imprimir o valor de um objeto, que pode ser dos tipos String, Integer, Boolean e GregorianCalendar. Essa tag possui um atributo Object valor, que recebe via EL o objeto que deve ser impresso. Quando o objeto é uma String, Integer ou Boolean eu consigo tranquilo, o problema é quando o objeto é um GregorianCalendar. Nesse caso, o atributo valor não recebe um objeto GregorianCalendar e sim uma String parecida com essa:

java.util.GregorianCalendar[time=1178107352343, areFieldsSet=true,areAllFieldsSet=true,lenient=true, zone=sun.util.calendar.ZoneInfo[id="GMT-03:00", offset=-10800000,dstSavings=0,useDaylight=false,transitions=0, lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1, YEAR=2007,MONTH=4,WEEK_OF_YEAR=18,WEEK_OF_MONTH=1, DAY_OF_MONTH=2,DAY_OF_YEAR=122,DAY_OF_WEEK=4, DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=9,HOUR_OF_DAY=9, MINUTE=2,SECOND=32,MILLISECOND=343,ZONE_OFFSET=-10800000, DST_OFFSET=0]

ps: coloquei espaços para não quebrar a página, a original não tem espaços.

Estou pensando seriamente em criar um método que identifique que essa String é um objeto GregorianCalendar (pelo início da String) e convertê-la (percorrendo a String e pegando os valores de data). Alguém tem uma solução melhor?

abraços a todos!

Não use o método toString de GregorianCalendar porque ela é útil só para depuração.

Você precisa fazer algo como:

String dataFormatada = new SimpleDateFormat ("<ponha aqui o formato que achar melhor>").format (seuGregorianCalendar.getTime());

Oi fabiozoroastro,

Eu conheço essa tag, utilizamos JSTL aqui, o problema é que essa tag não se limita a imprimir, ela faz outras coisas.

Mas enquanto escrevia a resposta para o seu post acabei tendo uma idéia, hehehe. Eu posso passar o valor a ser impresso não como atributo da tag, mas no corpo dela. Assim eu consigo utilizar JTSL ou alguma outra taglib, acredito que vá funcionar!

muito obrigado! :slight_smile:

abraços!

Caramba, acabei de lembrar que tem outra caso que isso acontece, dessa vez pior: não é apenas um valor, são dois valores. Sendo assim, não consigo passar os dois valores via corpo. Alguém tem alguma solução?

abraços,