Pessoal… nao estou conseguindo implementar o conversor…
Tenho um campo no banco do tipo datahora…(yyyy-mm-dd hh:mm:ss)
como irei fazer isso com o vraptor?
Obrigada

Pessoal… nao estou conseguindo implementar o conversor…
Tenho um campo no banco do tipo datahora…(yyyy-mm-dd hh:mm:ss)
como irei fazer isso com o vraptor?
Obrigada

Olá Ana!
A tua dúvida está em mostrar essa data formatada no jsp certo?
Se for, tu pode fazer da seguinte maneira:
<fmt:formatDate pattern="dd/MM/yyyy HH:mm:ss" value="${TUA_DATA}" />
A duvida eh passar do FORM para a Logica no formato certo… 
A pessoa ira digitar a datahora
Thanks

Não seria só declarar no seu logic:
@Parameter
private String data;
E depois passar a String para um construtor de Date (estando a String no formato correto) e aí mandar para o banco?
Desculpe se o que sugeri não tem nada a ver, mas não entendi direito sua dúvida! :roll:
Mas isso ocorre de forma automática. Não tem pq se preocupar com isso.
De forma automatica em termos ne?
Depende do meu locale… dependendo do locale a pessoa vai ter que digitar de um formato… estou certa ou errada?
Se eu colocar o fmt ele elimina isso?
uma outra divida de hibernate…
no meu campo eu tenho um campo datahora… so que eu quero buscar datainicial e datafinal… como eu faco isso no BEAN?
Obrigada pessoal… :lol:
O que tu pode fazer é setar o Locale no teu JSP, assim evita que um problema como este aconteça.
Sobre a tua dúvida no hibernate, desculpa, mas não entendi direito.
Na tua query tu faz um between normal no campo da data usando as datas de início e fim como delimitadores.
por exemplo:
from ENTIDADE where data between ? and ?
onde ? == dataInicial e dataFinal.
Isso msm Lucas… 
so que no formulario vou entrar com a datainicial e datafinal…
Como irei implementar isso? sendo que so existe um campo data no banco…
Desculpe se minha duvida eh idiota
eh q estou iniciando…
Obrigada

no meu DAO esta:
Query q =this.session.createQuery("Select m FROM Dados as m WHERE m.nome = :nome and m.datahora>=:datahora and m.datahora<=:datahora");
nao sei como ficaria… 
Acredito que assim deva funcionar. 
Query q = this.session.createQuery("Select m FROM Dados as m WHERE m.nome = :nome and m.datahora between :datahora and :datahora");
Mas no caso… o formulario serao duas datas: datai e dataf
E terao q estar no meu bean…se nao ele nao acha… 
Se eu colocar:
Query q = this.session.createQuery("Select m FROM Dados as m WHERE m.nome = :nome and m.datahora between :datahora and :datahora");
q.setParameter("nome",m.getNome());
q.setParameter("datahora",m.getDatahora());
Minha duvida eh como mapear essa datai e dataf
ja que no meu BEAN so tem data 
meu form
<form method="POST" action="dado.lista.logic">
<p>ID <input type="text" name="dado.nome" size="20"> DATAHORA(yyyy-mm-dd
hh:mm:ss)<input type="text" name="dado.datahora" size="20"> DATAHORA(yyyy-mm-dd
hh:mm:ss)<input type="text" name="dado.datahora" size="20"></p>
<p> </p>
<p><input type="submit" value="Buscar" name="B1"></p>
</form>
Confusao 
Obrigada 
É neste caso tu deveria ter duas datas no teu Bean.
Mas tu também pode ter essas duas datas dentro da tua classe Logic.
tipo:
@Out
@Parameter
private Date dataInicial
@Out
@Parameter
private Date dataFinal
Bom… funcionou desse jeito…
Porem ao invez de Date coloquei String…
pq com o Date ele da erro de conversao…
Se eu colocar como Date? como posso fazer? nao entendi ate agora 
no caso meu campo Date teria que ser yyyy-mm-dd hh:mm:ss
Pode me dar um help?
Obrigada pela Ajuda…

Hmmm, estranho, ele deve funcionar tranquilamente com Date.
Teria como postar o fonte da tua classe Logic?
Fiz uma Logica onde recebo como argumente o ID e a DATAHORA, nao sei se esta certo… mas meu codigo esta abaixo:
Meu Bean:
Code:
@Entity
@IdClass(DadosMPK.class)
public class DadosM
{
@Id
@Temporal(TemporalType.TIMESTAMP)
private Date datahora;
@Id
private Integer id;
public Date getDatahora() {
return datahora;
}
public void setDatahora(Date datahora) {
this.datahora = datahora;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
Como eh chave composta criei a Classe DadosMPK
Code:
@Embeddable
public class DadosMPK implements Serializable
{
private Date datahora;
private Integer id;
private Date datahora;
public Date getDatahora() {
return datahora;
}
public void setDatahora(Date datahora) {
this.datahora = datahora;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
Fiz um DAO generico onde:
Code:
public List<DadosM> listaM(DadosM met)
{
Query q =this.session.createQuery("SELECT m FROM dadosm as m WHERE m.id = :id and m.datahora=:datahora");
q.setParameter("id",met.getId());
q.setParameter("datahora", met.getDatahora());
return q.list();
}
Minha Logica:
Code:
package br.com.dado.logic;
import java.util.List;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;
import br.com.pcd.bean.DadosM
import br.com.pcd.dao.DaoFactory;
import br.com.pcd.interator.DaoInterceptor;
@Component
@InterceptedBy(DaoInterceptor.class)
public class DadoMLogic
{
private final DaoFactory daoFactory;
private List<DadosM> estacoesM;
public DadoMLogic (DaoFactory daoFactory)
{
this.daoFactory =daoFactory;
}
public void formulario()
{
}
public void listatudo(DadosM m)
{
this.estacoesM=this.daoFactory.getDadosMDao().listaM(m);
}
}
crie na pasta web/dadosm/formulario.ok.jsp e o listatudo.ok.jsp
no formulario
Code:
<%@page pageEncoding="Cp1252" contentType="text/html; charset=Cp1252" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/>
<title></title>
</head>
<body>
<form method="POST" action="dadosm.listatudo.logic">
<p>ID <input type="text" name="dadosm.id" size="20"> DATAHORA(yyyy-mm-dd
hh:mm:ss) <u><input type="text" name="dadosm.datahora" size="20"></u></p>
<p> </p>
<p><input type="submit" value="Buscar" name="B1"></p>
</form>
</body>
</html>
O erro eh o seguinte:
quando vou rodar http://localhost:8080/teste/dadosm.formulario.logic
Code:
21:00:34,484 WARN RootClass:210 - composite-id class does not override equals(): br.com.pcd.bean.MeteorologicaPK
21:00:34,500 WARN RootClass:215 - composite-id class does not override hashCode(): br.com.pcd.bean.MeteorologicaPK
21:01:07,796 ERROR LocaleCalendarDateConverter:47 - Unable to parse string 2007-03-10
java.text.ParseException: Unparseable date: "2007-03-10"
at java.text.DateFormat.parse(Unknown Source)
at org.vraptor.converter.basic.LocaleCalendarDateConverter.convert(LocaleCalendarDateConverter.java:38)
at org.vraptor.converter.SimpleConverterManager.convert(SimpleConverterManager.java:62)
at org.vraptor.reflection.JPathExecutor.convert(JPathExecutor.java:215)
at org.vraptor.reflection.JPathExecutor.internalSet(JPathExecutor.java:195)
at org.vraptor.reflection.JPathExecutor.set(JPathExecutor.java:102)
at org.vraptor.introspector.BasicIntrospector.readParameters(BasicIntrospector.java:76)
at org.vraptor.core.ConversionEngine.convert(ConversionEngine.java:19)
at org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:108)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:82)
at org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:45)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:82)
at org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:56)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:82)
at br.com.pcd.interator.DaoInterceptor.intercept(DaoInterceptor.java:21)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:82)
at org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:57)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:82)
at org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:91)
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(Unknown Source)
O que pode ser???
O formato da DATA eh yyyy-mm-dd hh:mm:ss
OBS: esse exemplo nao fiz pegando 2 datas… com 2 datas coloquei como String e defini na minha LOGIC e funcionou…
Ok.
public List<DadosM> listaM(DadosM met, Date dataInicial, Date dataFinal)
{
Query q =this.session.createQuery("SELECT m FROM dadosm as m WHERE m.id = :id and m.datahora between :dataInicial and :dataFinal");
q.setParameter("id",met.getId());
q.setParameter("dataInicial", dataInicial);
q.setParameter("dataFinal", dataFinal);
return q.list();
}
package br.com.dado.logic;
import java.util.List;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;
import br.com.pcd.bean.DadosM
import br.com.pcd.dao.DaoFactory;
import br.com.pcd.interator.DaoInterceptor;
@Component
@InterceptedBy(DaoInterceptor.class)
public class DadoMLogic
{
private final DaoFactory daoFactory;
private List<DadosM> estacoesM;
public DadoMLogic (DaoFactory daoFactory)
{
this.daoFactory =daoFactory;
}
public void formulario()
{
}
public void listatudo(DadosM m, Date dataInicial, Date dataFinal)
{
this.estacoesM=this.daoFactory.getDadosMDao().listaM(m, dataInicial, dataFinal);
}
}
Para a pesquisa com as duas datas:
<%@page pageEncoding="Cp1252" contentType="text/html; charset=Cp1252" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/>
<title></title>
</head>
<body>
<form method="POST" action="dadosm.listatudo.logic">
<p>ID <input type="text" name="dadosm.id" size="20">
DATA INICIAL (yyyy-mm-dd hh:mm:ss)
<u><input type="text" name="dataInicial" size="20"></u>
DATA FINAL (yyyy-mm-dd hh:mm:ss)
<u><input type="text" name="dataFinal" size="20"></u></p>
<p> </p>
<p><input type="submit" value="Buscar" name="B1"></p>
</form>
</body>
</html>
Ola Lucas…
Entao… nao deu erro dessa vez porem nao lista nada pq a data esta vindo ± nesse formato:
Mon 12 Abr07
e o formato que preciso eh yyyy-mm-dd hh para passar para o banco…

Thanks 