Jsf+ajax+jquery

10 respostas
S

Pessoal gostaria de saber como faço uma requisição ajax a um bean usando o jquey?

10 Respostas

A

Como assim, você quer acessar um bean que está com sessão ativa e executar funções com o objeto que está sendo trabalhado?

S

Na verdade estou querendo colocar meu bean com o escopo de aplicação, porem quero mandar uma requisição ajax chamando o método que vai me retornar os dados que estão nesse escopo de aplicação, na verdade o que quero aprender a fazer é como chamar um método em uma bean usando jquery, fiz um teste usando jsp e ta funcionandp abaixo segue o link do meu método:

function carregaQuadrantes() {
                $(function() {
                    $.ajax({
                        type: "GET",
                        /**
                         * Quero mudar essa url para chamar meu bean jsf é isso que não sei
                         */
                        url: "/faces/Quadrantes.faces?method=findAll",
                        success: function(dados) {
                            $.each(dados, function(key, val) {
                                var SW = new google.maps.LatLng(val.latitudeSw, val.longitudeSw);
                                var NE = new google.maps.LatLng(val.latitudeNe, val.longitudeNe);
                                var rectangle = new google.maps.Rectangle();
                                var rectOptions = {
                                    strokeColor: "black",
                                    strokeOpacity: 0.5,
                                    strokeWeight: 0.2,
                                    fillOpacity: 0,
                                    map: map,
                                    bounds: new google.maps.LatLngBounds(NE, SW)
                                };
                                rectangle.setOptions(rectOptions);
                                rectArr.push(rectangle);
                                bindWindow(rectangle, rectArr.length);
                            });

                        }
                    });
                });

            }
E

srmachado,

Eu tive que fazer isso também e a solução que usei foi serializar os dados do meu bean para um JSON.
Basicamente tu cria um método que retorna a URL (usando REST) com o objeto JSON, e usa essa URL no atributo url do jQuery.ajax().
Bom não sei o quanto tu conhece de JSON, mas se tiver alguma dúvida posta ai.

S

Não conheço muito você teria um código para exemplo?

E

Vamos lá.
Primeiro tu produz um uma URL via REST.

@GET
@Path("nome_que_voce_define_url/{param_1}/{param_2}/{param_3}")
@Produces("application/json")
public String geraDadosJSON(@PathParam(value = "param_1") String param1, @PathParam(value = "param_2") String param2, @PathParam(value = "param_3") String param_3) {
        JSONArray jsonArray = new JSONArray();
        jsonArray.put(JSONObject.fromObject(seuBean));
        return jsonArray.toString();
}

Os parâmetros podem ser variáveis (depende do que você quer usar no seu método), você pode usa-los passando pelo js, assim:

function carregaQuadrantes(param_1, param_2, param_3) { { $(function() { $.ajax({ url: 'nome_da_url_que_voce_definiu/'+param_1+'/'+param_2+'/'+param_3, contentType: "application/json; charset=utf-8", dataType: 'json', success: function(data) { //manipulando seu JSON });

O bean que abrigará o método que gera os dados JSon, deve ser anotado com @Path.

Aqui tem um exemplo mais completo:
http://www.k19.com.br/artigos/criando-um-webservice-restful-em-java/

S

Esse método:

@GET
@Path("nome_que_voce_define_url/{param_1}/{param_2}/{param_3}")
@Produces("application/json")
public String geraDadosJSON(@PathParam(value = "param_1") String param1, @PathParam(value = "param_2") String param2, @PathParam(value = "param_3") String param_3) {
        JSONArray jsonArray = new JSONArray();
        jsonArray.put(JSONObject.fromObject(seuBean));
        return jsonArray.toString();
}

Eu crio dentro do meu manager bean?

E

Cria uma nova classe e anota ela com o @Path, como no exemplo do link

@Path("/helloworld") 
public class HelloWorldResource {

   @GET @Produces("text/plain") 
   public String showHelloWorld() { 
       return "Olá mundo!"; 
    } 
}
S

Essa é a unica forma?

S

Caraca galera, não consigo fazer uma requisição ajax para chamar meu bean usando o jquery puro?

F

Posso estar enganado, mas este é um problema de falta de conceito.

Leia este post do blog da Caelum, é pequeno porém muito útil e informativo:
http://blog.caelum.com.br/entenda-os-mvcs-e-os-frameworks-action-e-component-based/

Criado 28 de novembro de 2012
Ultima resposta 29 de nov. de 2012
Respostas 10
Participantes 4