Segue abaixo exemplo contendo várias informações sobre controllers.
Para ver documentação oficial, visite grails.org.
Se lhe foi útil, deixe um comentário (pode ser anônimo).
1. Basico de actions
class ToperaController { def teste = { render "Hello World" } }
Acessado via: http://localhost/minha-app/topera/teste
2. Tipos de encerramento de actions
class ToperaController { // retornar HTML cru def html = { render "Hello World" } // requestDispatcher pra view gsp (traducao: manda os dados prum html externo) // o gsp que será procurado pelo server é o views/topera/html2.gsp def html2 = { [msg: "Hello Crazy World!!"] } // e o gsp poderia ser "A mensagem recebida foi ${msg}" // renderiza JSON, criando obj na hora def json1 = { render(contentType:"text/json") { [nome: "rafael", idade:29] } } // renderiza JSON, usando objeto pre-existente def json2 = { def pessoa = new Pessoa([nome: "rafael", idade:29]) render(contentType:"text/json") {pessoa} } // renderiza JSON (outra forma) def json3 = { render new Pessoa([nome: "rafael", idade:29]) as JSON } /* * Obs: os retornos em JSON podem ser lidos direto pelo javascript. Com jQuery seria assim: * * $.getJSON("http://localhost/minha-app/topera/b2", function(pessoa){ * alert("Nome pego no servidor foi " + pessoa.nome); * }); */ // renderiza de acordo com tipo de url // "topera/varios.json" pega json e "topera/varios.html" pega html def varios = { def pessoa = new Pessoa([nome: "rafael", idade: 29]); withFormat { html {render "Nome: $pessoa.nome Idade: $pessoa.idade"} json {render pessoa as JSON} } } // monta html via objeto def htmlObj = { render { div(id:"meuId"){ b ("Mensagem") } } } // retorna stream de arquivo binario def figura = { response.setContentType("image/jpeg") response.outputStream << new File("D:/foto.jpg").readBytes() } // redireciona pra ToperaController.html() (dá um sendRedirect, isto é, browser recebe informacao para redirecionar) def redirect1 = { redirect controller: 'topera', action: 'html' } // redireciona pra action a, no mesmo controller def redirect2 = { redirect action: 'html' } // encaminha para outra action, SEM envolver client (browser) def forward = { forward action: 'html' } } class Pessoa {def nome, idade}
Resumo muito útil pra quem ta começando. Direto ao ponto!
ResponderExcluir