[RESOLVIDO] Formatação data JSTL

Pessoal,

Estou me batendo em algo muito básico :frowning:

Na minha aplicação (estou usando vRaptor) eu mostro um Date. Vejam:

<c:forEach items="${lista }" var="users">
	${users.dataCriacao }
</c:forEach>

O que me retorna por exemplo: 2011-08-31 00:23:32.0

Como faço para isto ficar em dd/MM/yyyy?

Já tentei com o fmt:formatDate e não deu muito certo. Também tentei outros métodos não elegantes, utilizando o <% %>, neste eu consigo realizar o procedimento, mas como deixar a váriavel ${users.dataCriacao } disponível dentro do código java?

<%
	SimpleDateFormat outz = new SimpleDateFormat("dd/MM/yyyy");
	out.print(outz.format(${users.dataCriacao }));
%>

A variável não vai ficar disponível ali :frowning:

Outra, esta variável está me retornando uma String ou ela traz o tipo que está no meu array mesmo? (date)

Se puderem me ajudar, tanto com o fmt:formatDate quanto do outro jeito, plz!

Abraços

fmt:formatDate deveria funcionar…
Realmente, como você pega aquela variável com JSTL, não vai funcionar muito você usar scriptlet dentro.

Caso você precise disso urgente, faça do modo feio mesmo. Troque a tag c:forEach por mais scriptlet. :smiley:
Senão, use fmt mesmo.

Fernando tudo bem, mas aí eu caio na mesma…

Como eu vou conseguir pegar minha variável lista no scriptlet? Para executar o meu for por ali :slight_smile:

Qual é o tipo do seu campo data? Se for Calendar, tente usar o fmt:formatDate colocando o nome da sua variável assim: ${users.dataCriacao.time}

felipe, é um date, estou usando hibernate e vRaptor…

aqui eu ponho a lista para ficar disponível na JSP:

@Get @Path("/adm/usuarios/lista")
	public void listaUsuario() {
		List<Usuario> usuarios = new ArrayList<Usuario>();
		List<Usuario> lista = userDao.listaTodos();
		for (Usuario users : lista) {
			Usuario novoUser = new Usuario();
			novoUser.setId(users.getId());
			novoUser.setLogin(users.getLogin());
			novoUser.setNome(users.getNome());
			novoUser.setEmail(users.getEmail());
			novoUser.setDataCriacao(users.getDataCriacao());
			novoUser.setPerfil(users.getPerfil());
			
			usuarios.add(novoUser);
		}
		
		result.include("lista", usuarios);
	}

e no meu banco essa dataCriacao é um simples:

private Date dataCriacao;

com o meu .time igual você diz, me dá este erro:

javax.el.ELException: Cannot convert 1.314.761.012.000 of type class java.lang.Long to class java.util.Date

Ah, como é Date mesmo, não precisa do .time…

Você pode fazer assim:

<fmt:formatDate value="${users.dataCriacao}" type="date" pattern="dd/MM/yyyy"/>

Ah! E o Date é o java.sql.Date?

Cara, acho que era esse type=“date”… estava fazendo só com o value e pattern, agora funcionou, muuuuuuuuito obrigado felipe :wink:

em relação ao meu date, era um java.util.Date mesmo :smiley:

Obrigadão! Abraços

Legal!

Abraços