Erro ao formatar Data

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 ?

[quote=Maracuja]Que é isso que vc ta fazendo…

pq isso

não entendi!!![/quote]

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.

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.

Afinal, o que vc ta tentando fazer?

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

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.

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;

Que é isso que vc ta fazendo…

pq isso

não entendi!!!

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

Continuo sem entender o que vc quer :!: