Ajuda aqui VRaptor + EL [ Resolvido ]

12 respostas
C

[i]Blzz galera?

Entãoo…

to começando a estuda agr VRaptor e talz.
e ja to apanhando :confused:

antes eu soh usava jsf…
porém resolvi mudar.

o meu problema eh o seguinte…
tenho a seguinte consulta no banco :[/i]

return this.session
				.createQuery(
						"SELECT DATEDIFF(NOW(),dataRecolhimento) as dias, placaVeiculo "
								+ "FROM " + Patios.class.getSimpleName()
								+ " WHERE dataLiberacao IS NULL AND "
								+ "DATEDIFF(NOW(),dataRecolhimento) > 90")
				.list();

[i]A query esta me listando certinho no banco de dados…

Porém não sei como lista esta query na view :confused:
sim. eh uma duvida realmente nb…

mais como venho do jsf e lá n tem EL, estou apanhando :confused:

Estava fazendo assim:[/i]

<c:forEach items="${patiosList }" var="patio">
					<tr>
						<td>${patio1 }</td>
					</tr>
				</c:forEach>

[i]Ta perfeito, lista os dias porém nda mais…

O que eu tenho q fazer pra lista o resto dos registros contidos na consulta?

Ajudaaa galeraa :confused:

Vlww[/i]

12 Respostas

henriqueluz

Para listar os outros atributos da classe Patio basta você usar a seguinte expressão dentro do foreach:

${patio.nomeDoAtributo}

Supondo que você ja tenha o método get do atributo.

Abs,

F

Cara para listar isso na view…

vc tem que fazer o seguinte…

primeiro no controller

public List<Patio> listaDePatios(){
  return patioDao.lista();
}

ai assim vc está retornando para a view uma lista de Pátios. e essa lista é devolvida na seguinte convenção

Classe com a primeira letra minúscula se não me engano + “List”

ai vc faz assim na view…

<table>
<c:forEach var="patio" items="${patioList }>
    <tr>
      <td>${patio.id }</td>
      <td>${patio.descricao }</td>
    </tr>
</c:forEach>
</table>

isso ai é só um exemplo neh… tenta dá uma estudada em EL é mto importante…

C

FelipeThi:
Cara para listar isso na view…

vc tem que fazer o seguinte…

primeiro no controller

public List<Patio> listaDePatios(){
  return patioDao.lista();
}

ai assim vc está retornando para a view uma lista de Pátios. e essa lista é devolvida na seguinte convenção

Classe com a primeira letra minúscula se não me engano + “List”

ai vc faz assim na view…

<table>
<c:forEach var="patio" items="${patioList }>
    <tr>
      <td>${patio.id }</td>
      <td>${patio.descricao }</td>
    </tr>
</c:forEach>
</table>

isso ai é só um exemplo neh… tenta dá uma estudada em EL é mto importante…

Eu ja havia tentado isso…
mais qnd eu faço isso eu recebo esse erro :

org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/patio/leiloavel.jsp at line 198
196: 				<c:forEach items="${patiosList }" var="patio">
197: 					<tr>
198: 						<td>${patio.placaVeiculo }</td>
199: 					</tr>
200: 				</c:forEach>
java.lang.NumberFormatException: For input string: "placaVeiculo"
	java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

sera que eh por causa da minha query ?

"SELECT DATEDIFF(NOW(),dataRecolhimento) as dias, placaVeiculo "
						+ "FROM " + Patios.class.getSimpleName()
						+ " WHERE dataLiberacao IS NULL AND "
						+ "DATEDIFF(NOW(),dataRecolhimento) > 90").list();

[i]Eu preciso mostrar tbm o valor de dias que retorna da função DATEDIFF(NOW(),dataRecolhimento) tbm e não tenho a minima noçao d como fazer, pq n tenho um get dele na minha classe…

Alguem sabe? =/

Vlwwwww[/i]

F

Acho que sim…

tenta um createCriteria…

return sessao.createCriteria()

C

FelipeThi:
Acho que sim…

tenta um createCriteria…

return sessao.createCriteria()

[i]Perfeito Felipe !

Consegui listar todos com a diferença de datas de 90 dias. Porémm ainda não consigo mostrar qnts dias na view.

minha criteria esta assim :[/i]

return this.session
				.createCriteria(Patios.class)
				.add(Restrictions
						.sqlRestriction("DATEDIFF(NOW(),patio_dataRecolhimento_veiculo) > 90"))
				.list();

[i]consigu acessar por EL daquele jeito q vc me falo e tdo.
mais ainda n sei como recuperar os dias :confused:

vc sabe? :smiley:

Vlwww kra[/i]

F

tente pegar a data com a própria EL…

vc pode fazer qualquer operação com EL tenta ai ver esse post também…

http://javafree.uol.com.br/topic-862240-Data-com-jstl.html

C

FelipeThi:
tente pegar a data com a própria EL…

vc pode fazer qualquer operação com EL tenta ai ver esse post também…

http://javafree.uol.com.br/topic-862240-Data-com-jstl.html

[i]Então, não é a data em si q eu preciso recuperar e mostrar na view.
É a diferença de dias da data q esta no banco com a data de hj.

Seria isso :[/i]

"DATEDIFF(NOW(),patio_dataRecolhimento_veiculo)"

[i]mais n sei como fazer isso em criteria e dps mostrar esse valor na view.

Será que da pra fazer isso???

[/i]

F

Então cara…

vc tem essa opção… de fazer usando JSTL…

porém de outra forma na sua classe de “Entity”… vc pode colocar uma propriedade que é isso a diferença dos dias…

tipo…

@Transient
private int DiferencadeDias;

ai você faz os get e os sets dessa propriedade e ela não irá pro banco… ai no set da propriedade da data…vc usa apenas o java simples e puro para setar a propriedade DiferencadeDias… ai é simples pq ela tá na entity e vc poderá chamar ela na view normalmente.

C

FelipeThi:
Então cara…

vc tem essa opção… de fazer usando JSTL…

porém de outra forma na sua classe de “Entity”… vc pode colocar uma propriedade que é isso a diferença dos dias…

tipo…

@Transient
private int DiferencadeDias;

ai você faz os get e os sets dessa propriedade e ela não irá pro banco… ai no set da propriedade da data…vc usa apenas o java simples e puro para setar a propriedade DiferencadeDias… ai é simples pq ela tá na entity e vc poderá chamar ela na view normalmente.

[i]Consegui resolver criando uma tag jstl msm :smiley:

Muito obrigado pela ajuda Felipe ![/i]

F

c0nf1ck:
FelipeThi:
Então cara…

vc tem essa opção… de fazer usando JSTL…

porém de outra forma na sua classe de “Entity”… vc pode colocar uma propriedade que é isso a diferença dos dias…

tipo…

@Transient
private int DiferencadeDias;

ai você faz os get e os sets dessa propriedade e ela não irá pro banco… ai no set da propriedade da data…vc usa apenas o java simples e puro para setar a propriedade DiferencadeDias… ai é simples pq ela tá na entity e vc poderá chamar ela na view normalmente.

[i]Consegui resolver criando uma tag jstl msm :smiley:

Muito obrigado pela ajuda Felipe ![/i]

Marca como resolvido então…

F

há e posta a solução também né…

kkkkkkkkkkkk’

deixa de ser egoísta rsrsrsrs :smiley:

C

FelipeThi:
há e posta a solução também né…

kkkkkkkkkkkk’

deixa de ser egoísta rsrsrsrs :D

[i]aeuhUAheuHAeHA

eu fizz assim:

criei um arquivo chamado dateDiff.tag no meu WEB-INF/tags com a seguinte estrutura :[/i]

<%@ tag import="java.util.Date" body-content="empty"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ attribute name="date1" required="true" rtexprvalue="true"
	type="java.util.Date"%>
<%@ attribute name="date2" required="false" rtexprvalue="true"
	type="java.util.Date"%>
<%
	Date date1 = (Date) jspContext.getAttribute("date1");
	Date date2 = (Date) jspContext.getAttribute("date2");
	if (date2 == null) {
		date2 = new Date();
	}
	int diffMinutes = (int) ((date2.getTime() - date1.getTime()) / 1000) / 60;
	int diffHours = diffMinutes / 60;
	int diffDays = diffHours / 24;
	String dateDiffMsg = "";
	if (diffMinutes < 60) {
		dateDiffMsg = diffMinutes + " minutos";
	} else if (diffHours < 24) {
		dateDiffMsg = diffHours + " horas";
	} else {
		dateDiffMsg = diffDays + " dias";
	}
	jspContext.setAttribute("dateDiffMsg", dateDiffMsg);
%>
${dateDiffMsg}

e na minha view eu faço assim :

// Inicio da pagina
<%@ taglib tagdir="/WEB-INF/tags" prefix="h"%>

<c:forEach items="${patiosList }" var="patio">
      <td><h:dateDiff date1="${patio.dataRecolhimento }" />
</c:forEach>

Espero que ajude alguem que esteja precisando ! :smiley:

Criado 29 de julho de 2011
Ultima resposta 29 de jul. de 2011
Respostas 12
Participantes 3