Erro ao formatar Data

8 respostas
M

Pessoal, estou tentando formatar a data desta maneira:

public Date getData_fim() throws Exception {
     SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
     Date data = new java.util.Date(format.parse(data_fim.toString()).getDate());
     System.out.println("Data_Fim: "+data);
     return data_fim;
}

Mas está dando o seguinte erro:

17:18:31,037  WARN LookupUtil:99 - Exception: [.LookupUtil] Error looking up property "data_fim" in object type "sensatta.modelo.Ausencia". Cause: null
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.apache.commons.beanutils.PropertyUtils.getSimpleProperty(PropertyUtils.java:1185)
	at org.displaytag.util.LookupUtil.getProperty(LookupUtil.java:271)
	at org.displaytag.util.LookupUtil.getBeanProperty(LookupUtil.java:129)
	at org.displaytag.model.Column.getValue(Column.java:124)
	at org.displaytag.model.Column.createChoppedAndLinkedValue(Column.java:201)
	at org.displaytag.model.Column.initialize(Column.java:178)
	at org.displaytag.render.TableWriterTemplate.writeTableBody(TableWriterTemplate.java:308)
	at org.displaytag.render.TableWriterTemplate.writeTable(TableWriterTemplate.java:133)
	at org.displaytag.render.HtmlTableWriter.writeTable(HtmlTableWriter.java:643)
	at org.displaytag.tags.TableTag.writeHTMLData(TableTag.java:1549)
	at org.displaytag.tags.TableTag.doEndTag(TableTag.java:1218)
	at org.apache.jsp.ausencia.buscaAusencia_ok_jsp._jspService(buscaAusencia_ok_jsp.java:171)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
	at org.vraptor.view.RegexViewManager.directForward(RegexViewManager.java:70)
	at org.vraptor.view.RegexViewManager.forward(RegexViewManager.java:64)
	at org.vraptor.view.OverridableViewManager.forward(OverridableViewManager.java:66)
	at org.vraptor.view.RemoteViewManager.forward(RemoteViewManager.java:73)
	at org.vraptor.interceptor.ViewInterceptor.intercept(ViewInterceptor.java:40)
	at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	at org.vraptor.interceptor.OutjectionInterceptor.intercept(OutjectionInterceptor.java:40)
	at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	at org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:46)
	at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	at org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:141)
	at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	at org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:45)
	at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	at org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:56)
	at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	at sensatta.logic.DaoInterceptor.intercept(DaoInterceptor.java:17)
	at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	at org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:57)
	at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	at org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:89)
	at org.vraptor.core.VRaptorController.execute(VRaptorController.java:39)
	at org.vraptor.VRaptorServlet.service(VRaptorServlet.java:57)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:595)
Caused by: java.text.ParseException: Unparseable date: "2007-06-24 00:00:00.0"
	at java.text.DateFormat.parse(DateFormat.java:335)
	at sensatta.modelo.Ausencia.getData_fim(Ausencia.java:32)
	... 66 more

Onde estou errando ?

8 Respostas

M

Maracuja:
Que é isso que vc ta fazendo…

pq isso

não entendi!!!

Ah, nem eu sei !!! rsrsrsrsrsrs
Isso achei nas buscas pelo google, eu tb achei estranho, mas to desesperado em achar uma solução de converter String no formato DD/MM/YYYY para retornar como Date no mesmo formato. Consegui fazer retornar de várias formas, menos na forma DD/MM/YYYY. Já são dois dias pesquisando e testando uma maneira de resolver.

Valew.

M

Mudei de estratégia, e junto, mudou o problema !!! hehehehehe

Criei uma classe converter, seguindo um exemplo na net, vejam:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import org.vraptor.LogicRequest;
import org.vraptor.converter.ConversionException;
import org.vraptor.converter.Converter;

public class DateConverter implements Converter{

	public Object convert(String data, Class<?> arg1, LogicRequest arg2) throws ConversionException { 
		Calendar calendar = Calendar.getInstance(); 
		DateFormat format = new SimpleDateFormat("dd/MM/yyyy"); 
		try { 
			if(data== null || data.trim().equals("")) { 
				return null; 
		} 

		calendar.setTime(format.parse(data)); 

		System.out.println("Retorno do Converter: "+calendar.getTime());
		return calendar.getTime(); 

		}catch (java.text.ParseException e) { 
			throw new ConversionException("error_conversion",e.getMessage(), e); 
		} 
	} 

	public Class<?>[] getSupportedTypes() { 
		return new Class[] { Calendar.class }; 
	}
	
}

Ai na minha entidade, coloquei uma anotação pra o tipo Date:

@Conversion(DateConverter.class)
private Calendar data_inicio;

@Conversion(DateConverter.class)
private Calendar data_fim;

O problema é o que tá me retornando, ao invés de uma simples data data tipo 06/06/2007, está me retornando o seguinte:

java.util.GregorianCalendar[time=1182654000000,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=2007,MONTH=5,WEEK_OF_YEAR=25,WEEK_OF_MONTH=4,DAY_OF_MONTH=24,DAY_OF_YEAR=175,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-10800000,DST_OFFSET=0]

O que deve estar errado no converter ?

Valew.

cv1

Afinal, o que vc ta tentando fazer?

PS: http://java.sun.com/docs/codeconv nao ta la de enfeite…

M

Desculpe, vou tentar ser mais claro:

  • Estou usando VRaptor + Hibernate;
  • Tenho dois atribudos do tipo java.util.Date;
  • No INSERT é gravado no formato “dd/MM/yyyy”, que é o formato do input (validado por javascript);

O Problema:

  • Quando vou editar, eu busco o registro via hibernate passando o ID como parametro;
  • No value do input do meu formulário ele está trazendo no formato “YYYY-MM-DD 00:00:00”;
  • Se eu usar SimpleDateFormat, eu teria que retornar uma String, ai dá erro de persistencia, já que a data é do tipo Date no banco.

Qualquer dúvida, pode questionar…

Valew.

herbertpimentel

Cara o problema toda esta quando seu atributo esta com o valor null para data_fim.

Error looking up property “data_fim” in object type “sensatta.modelo.Ausencia”. Cause: null
java.lang.reflect.InvocationTargetException

talvez voce devesse verificar o valor dessa data:

if (data_fim != null)
{
   SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
   Date data = new java.util.Date(format.parse(data_fim.toString()).getDate());
   System.out.println("Data_Fim: "+data);
}

return data_fim;
JMan

Que é isso que vc ta fazendo…

pq isso

não entendi!!!

JMan

Ainda não entendi, pq vc formata um Date e cria novamente um Date; isso não faz sentido.

JMan

Continuo sem entender o que vc quer :!:

Criado 5 de junho de 2007
Ultima resposta 6 de jun. de 2007
Respostas 8
Participantes 4