VRAPTOR problema c/ include

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.

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

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);  
});  

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

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}

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?

e tente colocar o código entre aspas:

alert('${codigo}');   

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!!


            }

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

alert(codigo);

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!!
                            
                        },
});

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.

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

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)

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?

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

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);
    });  

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!

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');  
}  

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

alert($('#codigo'));

e retorna Object.object

é 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?