VRAPTOR problema c/ include

31 respostas
S

Tenho este codigo:

@Path("/pesquisa/retornaCodigo")
    public void retornaCodigo(String codigo) {
        result.include("codigo", codigo);
        System.out.println("nome ==--== "+codigo);
    }

agora n entendo pq aqui

function clickBene(codigo) {
                var url = '/P/pesquisa/retornaCodigo?codigo='+codigo;
                $.getJSON(url, null, function (json) {
                    alert(${codigo});
                });

alert(${codigo});
                
}

n tenho o retorno do codigo no alert!? sendo que o metodo clickBene é acionado corretamente mas n da alerta com o codigo oque esta faltando fiz algo errado sou novado sorry.

31 Respostas

S

E uma outra duvida VRAPTOR é uma boa forma de programar?
Existe algum outro framework que faz o mesmo servico que o vraptor faz?
Grato.

Lucas_Cavalcanti

Olá Samuel,

se vc chamou via ajax ($.getJSON é ajax), não dá pra usar variáveis do jsp (ex. ${codigo})…

ou seja, o que vc fez via include não vai pro bloco do getJSON.

o que vc pode fazer é retornar no método o código:

result.use(Results.json()).from(codigo, "codigo").serialize();

e no javascript:

$.getJSON(url, null, function (json) {  
    alert(json.codigo);  
});
S

como eu recupero em javascript a variavel assim ${variavel} é usando include ja consegui fazer assim mas agora n estou conseguindo por algum motivo!!

S

este alert das linhas 7 e 8 do exemplo era para funcionar mesmo fora do getJSON, preciso recuperar ${codigo} fora do bloco do getJSON

alert(${codigo});  
                  
}

uma coisa q eu notei tambem é que quando eu carrego uma pagina com o ${variavel} ja com seu respectivo valor, na pagina ele carrega a variavel normal, agora este include q eu do é mediante a uma pesquisa, concluindo a pesquisa que vai setar o valor da variavel ${variavel}

Lucas_Cavalcanti

na requisição que vai pra página jsp que tá esse código (e não a do $.getJSON), tem uma variável código incluída?

Lucas_Cavalcanti

e tente colocar o código entre aspas:

alert('${codigo}');
S

não deu certo veja como esta meu código

function clickBene(codigo) {
                var url = '/P/pesquisa/retornaCodigo?codigo='+codigo;
                $.getJSON(url, null, function (json) {

                });

                alert('${codigo}');//esta abrindo este alert com campo vazio!!


            }
Lucas_Cavalcanti

o código que vc quer dar alert é o que vc recebeu na função javascript? se sim, tire a ${}:

alert(codigo);
S

Entao mas no caso o alert n vai ficar neste local e sim em um outro local por isso preciso que ele fique como ${codigo} pois n irei usar esta variavel apenas dentro do bloco function clickBene vou usa-la dentro de uma

$('div#farmacia').dialog({
buttons: {
                        Editar: function() {
                            var url = '/P/prescricao?query='+${codigo}; aqui a variável precisaria esta alimentada!!
                            
                        },
});
Lucas_Cavalcanti

a menos que esse código esteja em um atributo da requisição, não dá pra fazer isso…

como isso tá no código javascript, vc precisa usar javascript, e não EL de JSP

vc pode criar uma variável com escopo maior em javascript e usar aí, ou ficar passando o código por todo lado.

S

como nao da se estou fazendo exatamente isso aqui

<title>Prescrição - Usuario:${localUsuario} </title>

e na control esta assim

result.include("localUsuario", login.getUsuario().getNome());

e funcionou normal

Lucas_Cavalcanti

blz, mas vc fez include do codigo no controller que mostra essa página?

(não vale ser no controller que vc chama via ajax)

S

E agora? como vou obter o valor de uma variável passada por parâmetro em uma pesquisa em uma .dialog?
Eu tenho uma tela de pesquisa, ai eu clico na linha ele captura o codigo da linha selecionada, como vou ter esse codigo em uma dialog?

S

capturo a variavel codigo assim

$.each(json.list, function(i) {
var code = json.list[i].codigo;
});

porém como vou usar esta variavel em uma .dialog

Lucas_Cavalcanti

só passar a variável pra função que faz o .dialog

$.each(json.list, function(i) {  
    var code = json.list[i].codigo;  
      funcaoQueCriaODialog(code);
    });
S

a funcao que cria o dialog é esta veeja

function clickBene(codigo) {
                $('div#farmacia').dialog('open');
            }

agora como vou colocar o parametro codigo dentro da dialog que ira abrir é ai q esta a minha dúvida o dialog farmacia precisa receber o parametro codigo!

Lucas_Cavalcanti

coloque um elemento em volta da onde vc quer colocar o código:

<span id="codigo"></span>

e na funcao vc faz:

function clickBene(codigo) {  
  $('#codigo').html(codigo);
  $('div#farmacia').dialog('open');  
}
S

entendi e no .dialog recupero a variavel cogido como?
tentei isso

alert($('#codigo'));

e retorna Object.object

Lucas_Cavalcanti

é só colocar o span que eu falei aonde vc quer que apareça o código, dentro da div#farmacia.

ou vc vai digitar esse código dentro do dialog?

S

Esta dentro da div farmacia

e na .dialog farmacia esta assim

$('div#farmacia').dialog({
                    autoOpen: false,
                    dialogClass: 'dialog',
                    title: 'Baixa de Prescrição',
                    width: 400,
                    height: 150,
                    modal: true,
                    show: 'fadeIn',
                    hide: 'fadeOut',
                    buttons: {
                        Editar: function() {
                            alert($('#codigo'));

                            
                        },
                        Baixa: function() {
                            //                            var url = '/P/prescricao/baixa';
                            //                            $.getJSON(url, null, function (json) {
                            //                                alert('Baixa concluida');
                            //                            });
                            //                            $(this).dialog('close');
                        },
                        Visualizar: function() {
                            //var code = ;
                            
                            //var url2 = '/P/Relatorios/relPrescricao?codigo='+${codigo}; 
                            //open(url2, 'new', 'width=699px, height=500px,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no');
                        }
                    }
                });

       <div id="farmacia">
            <span id="codigo"></span>  
            Confirma a baixa da prescrição selecionada? 
            Clique em sim para dar baixa e não para apenas visualizar.

        </div>
S

veja no editar é ali q preciso que apareca o codigo, no caso nao irei digitar o valor codigo dentro da dialog ele é passado por parametro mesmo

Lucas_Cavalcanti

então ao invés de span, coloque um input:

<input id="codigo"/>

e no editar vc coloca:

alert($('#codigo').val());
S

cara mas um input? e um campo que recebe texto n preciso de um input preciso apenas de uma variavel para armazenar o parâmetro codigo!!

Lucas_Cavalcanti

coloca no span então! já te falei como faz

S

com span ou assim

<input type="hidden" id="code"></span>


Editar: function() {
                            var codigoo = $('#code').val();
                            alert(codigoo);  

                        },

ele da um alert em branco!!

Lucas_Cavalcanti

na função dialog faça:

function clickBene(codigo) {    
      $('#codigo').val(codigo);  
      $('div#farmacia').dialog('open');    
    }
S
function clickBene(code) {  
                $('#code').html(code);
                
                var codiguzin = $('#code').val();
                alert(codiguzin);  
                //$('div#farmacia').dialog('open');  
            }

tb retorna em branco

Lucas_Cavalcanti

não é .html()… qdo é input vc precisa usar .val()… te mandei na msg anterior

S

Certissimo brother vlwwwwww

S

aproveitando o tópico lembrando que o problema ja foi resolvido eu gostaria de saber da opniao de vcs sobre o vraptor e o uso de ajax em uma aplicação é viável mesmo é uma boa pratica?
Grato.

Lucas_Cavalcanti

é viável sim (tanto que qse tudo usa isso hoje em dia) e é uma técnica mto importante pra poder recaregar pedaços da página ou fazer requisições pro servidor sem precisar recarregar tudo…

Acho que seria melhor vc abrir um tópico pra discutir isso :wink:

Criado 18 de abril de 2012
Ultima resposta 19 de abr. de 2012
Respostas 31
Participantes 2