[RESOLVIDO]Vraptor + hibernate + joda time

8 respostas
jingle

To com problema de usar joda time e vraptor e hibernate…

na verdade acredito que o problema seja só do vraptor + joda time (devo ta fazendo algo errado), porque o valor da data nem chega a vir junto no meu objeto.

Da o seguinte erro:

Como esta na model:

@Entity
@Component
public class Pendencia {
	@Column
	@Type(type = "org.joda.time.contrib.hibernate.PersistentDateTime")
	private DateTime dataInicio;

//... mais campos
}

no jsp:

$('#dataInicio').datepicker($.datepicker.regional['br']);
//...
	<label for="dataInicio"><span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>Inicio:</label>
	<input type="text" name="pendencia.dataInicio" id="dataInicio" value="${pendencia.dataInicio}"/>
/...

no hibernate.cfg ta assim :

<property name="dateTime">org.joda.time.contrib.hibernate.PersistentDateTime</property>

o que mais preciso fazer/configurar?

8 Respostas

P

ja tentou criar um Converter para o jodaTime?

parece ser isso que falta pelo erro citado: br.com.caelum.vraptor.VRaptorException: Unable to find converter for org.joda.time.DateTime

G

Se não me engano o converter que o vraptor possui built-in é o LocalDateTime.

Lagaffe

Uso o LocalDate e funciona muito bem no VRaptor.

O VRaptor já tem um converter para o LocalDate.

Se você tiver que manter o DateTime posso tentar ver como fazer o converter.

No hibernate.cfg não tenho nenhuma linha para o JodaTime

No modelo:

Se precisar da data atual use no jsp:

e

Lagaffe

Conforme documentação do VRaptor:

“A api de datas do Java é bem ruim, e por esse motivo existe o projeto joda-time (http://joda-time.sourceforge.net/) que tem uma api bem mais agradável para trabalhar com datas. Se o jar do joda-time estiver no classpath, o VRaptor registra automaticamente os conversores para os tipos LocalDate e LocalTime, logo você pode recebê-los como parâmetro sem problemas.”

Lucas_Cavalcanti

é isso que o pessoal falou, o VRaptor só tem converters pra LocalDate ou LocalTime… Pra usar o DateTime, crie a classe:

@Converts(DateTime.class)
public class DateTimeConverter implements Converter<DateTime> {
    public DateTime convert(String value, ....) {
         return //converte a string dada em um DateTime
    }
}

não precisa registrar a classe, o vraptor já faz isso automaticamente, é só usar a anotação @Converts do pacote do vraptor

candidosales

Estimado Lucas,

A anotação @Converts ainda existe?

Fui tentar colocar essa classe para converter e nã deu certo. =/

candidosales

Lucas,

Creio que anotação correta seja @Convert.

Gostaria que você analizasse abaixo para verificar se são estas as libs corretas para importar.

import org.joda.time.format.DateTimeFormat;
import org.joda.time.DateTime;

import br.com.caelum.vraptor.Convert;
import br.com.caelum.vraptor.Converter;



@Convert(DateTimeFormat.class)
public class DateTimeConverter  implements Converter<DateTime> {  
	 public DateTime convert(String value) {  
	         return ...;
	     }  
	 }
Lucas_Cavalcanti

é isso mesmo… só o método convert deveria ter mais alguns parâmetros…

Criado 30 de março de 2010
Ultima resposta 10 de ago. de 2010
Respostas 8
Participantes 6