VRaptor - sugestões para View com Ajax

Galera, estou para iniciar um projeto onde vou utilizar o VRaptor.

Gostaria de sugestões para view com ajax.

A principio irei utilizar Tiles. Agora pra ajax ainda não sei, gostaria da sugestão de vocês.

davisnog, eu usava tiles em um projeto grande que tenho. Fiz até uma receita de como integrar tiles com vraptor de forma transparente usando coc. Dessa forma você não precisa ficar especificando o forward manualmente. http://vraptor.caelum.com.br/cookbook/usando-tiles-com-vraptor3/

Quanto a ajax tenho usado jquery no cliente. O resto o vraptor já faz. http://guj.com.br/posts/list/144349.java

O que você acha?

eu tinha pensado em usar o ajaxtags http://ajaxtags.sourceforge.net/index.html, alguem já usou, tem algo a comentar?
Mais o jquery foi uma solução que eu havia cogitado.

garcia-jj, como vc tem usado o jquery para receber um objeto json do vraptor?

O Tiles vamos usar baseado no que esta na documentação do vraptor.

se vc estiver usando o JQuery:

var json = $.getJSON(url);

valeu lucascs.
Pode dar um exemplo de como o VRaptor retorna essa url?

davisnog, no meu caso usei jquery porque preciso não apenas de ajax, mas de algumas coisas em Javascript. E jquery atendeu bem. O ajax usei como o Lucas te falou.

Aqui o Lucas explica como fazer: http://guj.com.br/posts/list/144349.java

Quanto ao tiles já respondi no outro tópico.

Abraços

quanto a esse link eu já tinha visto.

Mais de qualquer forma obrigado.
Vou utilizar o jquery mesmo.

Só queria saber quando eu faço:

como eu recebo essa url no jquery:

No caso do result acima como ficaria a url para receber como parâmetro pelo jquery?

davisnog, dê uma olhada nos docs da jquery: http://docs.jquery.com/Ajax

Usando esse exemplo que o lucas mandou, o meu json imprime algo como:
{“AF”:“Afeganistão”,“ZA”:“África do Sul”,“AL”:“Albânia”}

Então faço o Javascript assim:

$.getJSON('/l10n/countries/', function(data) { var o = opts.objCountries.options; o.length = 0; //clean up $.each(data, function(k, v) { o[o.length] = new Option(v, k); o[o.length -1].selected = (k == opts.defaultCountry); }); });

Explicando: na variável data eu tenho minha estrutura json. Eu faço um loop nela (linha 4) e para cada valor que é retornado dentro de cada elemento json eu posso definir chaves, no meu caso k e v.

Isso depende do seu controller e do seu método. Isso segue as convenções normais do vraptor para URL.

Legal, como resolvi optar pelo jquery como biblioteca javascript,vcs conhecem plugin para o jquery que faça paginação no server?

Hmmm, não conheço. Mas você pode procurar em http://plugins.jquery.com. Mas não sei se há algo assim que possa fazer uma paginação decente, pois na verdade para fazer uma real paginação você precisa amarrar-se ao JPA ou JDBC, e a partir da sua consulta saber quantos registros há para a consulta. Com isso, baseado na página atual e quantidade de registros por página é preciso calcular o primeiro e último registro a ser exibido, e aí sim buscar do servidor esses dados.

Há os “menos decentes” como a display-tag que traz todos os registros porém exibe apenas os que estão dentro da paginação. Nos tempos que eu trabalhava em um empresa que possuia 32 milhões de clientes, imagina usar isso em produção? Seria o fim do mundo, hahahahaha.

Você pode também implementar uma por você mesmo. Eu fiz uma solução aqui bem caseira mas muito funcional que faz uma paginação e ainda gera um JPAQL baseado em criteria. Só não vou ter tempo de explicar muito sobre ela, heheheeh.

Abraços

eu tentei usar o displaytag, mais eu não consegui fazer a paginação no server, somente na view, ele trazia todos os dados e armazenava em sessão para fazer a paginação, e isso não é viavel.

E jquery também a mesma coisa, todos os plugins que eu achei fazem a paginação no cliente.

Alguma taglib serve, desde que eu consiga fazer paginação no server.

Foi por isso mesmo que eu chamei a display-tag de solução menos decente. Embora entendo que certas situações são difíceis de fazer. Nesse caso uma solução bem elaborada, que faça o filtro no banco, precisa saber o que você usa para acessar a base de dados e “se prender” nisso. Além do mais nem sempre você tem uma base de dados. Pode ser um repositório do filesystem por exemplo.

Não conheço projeto algum que faça isso, assim você terá que fazer uma pesquisa e ver se tem algum que atenda as tuas necessidades, até que pelo que entendi você quer usar paginação via ajax com jquery. Eu tenho uma não-ajax, e como já te falei, posso te passar os fontes sem problemas, basta me mandar uma MP com seu email (não posto aqui porque são muitas classes). Sempre documento meus fontes, e ela está bem documentada, não será difícil você adaptar ela.

Basicamente se consiste em um VO com os dados da paginação (pagina atual e quantidade de registros por pagina). Esse VO é criado pelo próprio vraptor baseado em um converter e o parametro de paginação que vem na URL. Esse objeto eu passo pro meu EJB e lá no repositório JPA o mesmo é passado para uma criteria que eu mesmo criei.

Internamente esse criteria vai no banco e baseado nos parametros faz um count nos registros, calcula registro inicial e final e enfim traz apenas os objetos que são necessários. Esse retorno precisa então ser tratado antes de voltar para a tela. Para isso eu criei 4 classes/interfaces que implementam Lists que contém os dados da paginação, e meu resultado da consulta é “wrappeado” por essas classes.

O que você acha?

Aqui vai meu gist com os objetos que te falei: o VO de paginação e as 3 classes/interfaces que paginam os resultados, caso você queria algo caseiro.

http://gist.github.com/249508

valeu garcia-jj, vou testar e qualquer coisa volto aqui.

Muito obrigado mesmo.