dúvida com "janela de confirmação"
25/03/2010 00:00
0
Em meu projeto há uma tela onde o usuário poderá enviar uma mensagem mediante preenchimento de alguns campos e, feito isso, clicar no botão "enviar" para efetivar a ação. A minha dúvida reside quando eu quero inserir uma janela de aviso (pop-up) informando se a operação foi realizada com sucesso ou não.

No meu controlador eu possuo o seguinte código:

def alarmMessage = {
if(request.method == 'POST'){

//faz algumas coisas, isso está funcionando

if(todos os campos foram preenchidos){

//executa algumas ações que estão funcionando, logo, o programa está entredando nesse laço

String message = "mensagem enviada com sucesso"
return [message:message]
}
}
}

O que eu gostaria de fazer é simplesmente acessar esse valor pela view e mostrar na janela. O motivo de querer essa dinâmica é que eu teria uma segunda parte do código que "guardaria" a outra messagem, caso o programa não entrasse no laço dos campos totalmente preenchidos. Ou seja, eu quero uma janela que apareça toda vez que clico no botão "enviar", entretando, a mensagem que esta janela mostrará dependerá do processamento do meu controlador.

Enfim, o jeito mais fácil que vi era:

onclick="return confirm()"

Mas, não consegui fazer esse método acessar o controlador, tentei algo como:

onclick="return confirm('${ManualAlarmInstance.alarmMessage()}')

Obviamente deu erro, mas a ideia era tentar acessar o controlador (ManualAlarm) e pegar a 'reposta' da função alarmMessage.
Tentei também criar na view um javaScript que fizesse o acesso ao controlador, mas como não tenho experiência com isso, não deu certo.

Alguém poderia me ajudar?
Tags: Grails


0
Olá Luciano,

bom, eu geralmente quando faço isso uso o render ao invés de return e uso jquery pra view.


o botao:

<input type=&quot;submit&quot; value=&quot;enviar&quot; onclick=&quot;enviar();&quot;/>

Com o jquery, fica assim:

function enviar(){
var url=&quot;/controller/action?parametro=valor&quot;;
$.post(url,function(data){
alert(data);
});
}

e no controller:

def alarmMessage = {
if(request.method == 'POST'){

//faz algumas coisas, isso está funcionando

if(todos os campos foram preenchidos){

//executa algumas ações que estão funcionando, logo, o programa está entredando nesse laço

String message = &quot;mensagem enviada com sucesso&quot;
render message
}
}
}


repare que a function que e executada no metodo post do jquery só é executada se a operação tiver sucesso, caso ocorra algum erro no controler essa function não será executada, logo é interessante você usar um try catch para caso de erro ele renderiza uma mensagem de erro.

espero que tenha ajudado.
28/03/2010 00:00


0
muito obrigado pela ajuda ssseara, vou tentar dessa maneira! Valeu <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
30/03/2010 00:00



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto