Boa Noite galera,
estou aprendendo a usar o VRaptor e estou achando um framework incrível e muito pratico, a forma de fazer uma requisição ajax e retornar um JSON, é simplesmente fantástica.
Porem mesmo com toda a facilidade deste framework ainda tem algumas coisas q estou tendo dificuldades, uma delas é com a formatação do campo dtEntrada, que ao criar o JSON chega na jsp com a formatação do metodo toString() da classe date, algo semelhante a “02/18/2016T00:00:00” e gostaria de corrigir isso, mas não achei como fazer isso usando o vraptor 4.
achei uma forma criando uma classe chamada “CustomJsonSerialization” que extende da classe “XStreamJSONSerialization” com a anotação “@Component”, porem não consigo usar essa anotação pois na lib “xtream” que tenho no meu projeto não tem essa classe(na versão q tenho não tem ela, versão: 1.4.7, porem os exemplos que vi usavam o vraptor 3).
gostaria de saber se alguem conhece alguma forma de resolver esse problema, alguem pode me dar uma luz?
segue alguns dos meus arquivos.
exibeProdutos.json.jsp
{ produtos:
[{
nome: '${produto.nome}',
dtEntrada: '${produto.dtEntrada}',
id: '${produto.id}',
valor: '${produto.valor}',
marca: '${produto.marca}'
}]
}
controller
@Get
@Path("/exibeProdutos")
public void exibeProdutos(String id){
List<Produto> lista = new ArrayList<Produto>();
try {
lista = new ProdutosDao().listaProdutos(id);
} catch (Exception ex) {
Logger.getLogger(IncidenteController.class.getName()).log(Level.SEVERE, null, ex);
}
result.use(json()).from(lista).serialize();
}
Ajax:
$.ajax({
url: '<c:url value="/exibeProdutos" />?id='+id,
dataType: 'json',
success: function(retorno){
$.each(retorno.list, function(){
var ret = this;
$newTr = document.createElement("tr");
$newTd1 = document.createElement("td");
$newTd2 = document.createElement("td");
$newTd3 = document.createElement("td");
$newTd4 = document.createElement("td");
$newTd5 = document.createElement("td");
$("#internalElements").append( $newTr );
$($newTr).append( [ $($newTd1).append(ret.id) ],
[ $($newTd2).append(ret.impact) ],
[ $($newTd3).append(ret.user) ],
[ $($newTd4).append(ret.dataHora) ],
[ $($newTd5).append(ret.acao) ]
);
$('div#pop-up').show();
});
}
});