Json + jsf +xhtml

2 respostas
T

E ai pessoal,
eu to desenvolvendo um projeto, e preciso de adicionar div’s dinamicamente… por exemplo… se eu trago 5 objetos do tipo “Mensagem” do banco de dados, eu vou formatar cada um desses 5 objetos em uma div.

Pra isso pensei em usar ajax. Eu sei como que faz a consulta no bd e retorna o json já encodado… um exemplo:

public void listar(){
JSONArray array = new JSONArray();
Mensagem m = Mensagem.getInstance();
m.setTitulo("Titulo");
m.setTexto("Texto bla bla");
JSONObject json = new JSONObject();
json.put("nome", j.getNome());
json.put("texto", j.getTexto());
array.put(json);	
return array;
}

A ideia seria entao eu receber esse array json ne um javascript, e lá iria ter um ‘for’ para criar as div’s e adicionar o conteudo nelas.
mas eu não consegui descobrir como que eu chamo esse bean pra ele poder receber esse array. Acho que deve ser algo do tipo:

jQuery.ajax({
		url: "??????????", //URL de destino --- a url seria o bean, o metodo do bean, ou arquivo .xhtml(que to usando) ??
		dataType: "json", //Tipo de Retorno
		success: function(msgs){ 
			$.each(msgs, function (j, obj){
				alert(""+obj.titulo)//cada uma das msgs recebidas
			})
		}
	});

Voces sabem como eu poderia fazer isso?
existe algum componente (primefaces…) pra isso ?

vlw pessoal!

2 Respostas

C

Bom, primeiramente, o objetivo do JSF e seus respectivos componentes é abstrair essa complexidade de se trabalhar com js e html na mão, e com o JSF 2.0 a parte de ajax ficou muito simples.

Pelo que entendi do seu problema voce itera sobre uma lista pra montar um tabela ou um list desses dados certo? Qual componente voce utiliza para fazer isto? Eu não vejo dificuldade alguma nisso se estiver utilizando componentes como DataTable, DataList ou semelhantes. Sendo que com o componente ajax do prime isso fica simples, é só delimitar o metodo a ser chamado e especificar que ao final ele vai atualizar algum componente na tela(no caso sua lista em questão), e como o componente recebe o retorno do seu método que possui a lista, ele vai adicionar a nova linha.

T

Verdade cara, posso fazer isso com um datagrid…
Mecher com PHP muito tempo dá nisso… haha

Obrigado cara!

Criado 14 de junho de 2012
Ultima resposta 15 de jun. de 2012
Respostas 2
Participantes 2