Lucas Teixeira

@lucastex

Renderizando um XML como resposta em grails

com 7 comentários

Se em grails você precisar renderizar um XML como resposta de uma action, use o método render junto com o builder de XML que temos disponível. Muito fácil, rápido e objetivo.

No exemplo abaixo, um parâmetro nome é passado para a action, que faz uma consulta baseado neste parâmetro e nos nomes dos clientes.

def busca = {
   def clientes = Cliente.findAllByNomeIlike("%${params.nome}%")

   render(contentType: "text/xml") {
      results() {
         clientes.each {
            cliente -> result() {
               id(cliente.id)
               nome(cliente.nome)
            }
         }
      }
   }
}

Explicando o auto-explicativo:

Linha 2: Usamos um método dinâmico do grails (não, este método não existe na classe) que permite que eu localize todos os clientes (findAll) por seus nomes (byNome) Ilike (case insensitive) usando o parâmetro nome que veio no request. Esta lista é armazenada na referência clientes.

Linha 4: Pela funcão render deixamos claro que iremos renderizar um conteúdo text/xml

Linha 5: Esta será a nossa tag root do xml: results. A closure que se abre definirá os filhos deste nó.

Linha 6: Cada cliente na lista retornada…

Linha 7: Será um novo nó result do XML de resposta

Linhas 8 e 9: Os fois filhos de result, teremos o id do cliente e seu nome, suficiente para uma combo com auto-complete!
O resultado foi como esperado, e o tempo de fazer o exemplo funcionar foi definitivamente menor que o de escrever este post!

<results>
   <result>
      <id>313</id>
      <nome>JOSE DA SILVA</nome>
   </result>
   <result>
      <id>817</id>
      <nome>PATRICIA MARIA SILVA E SILVA</nome>
   </result>
   <result>
      <id>91</id>
      <nome>MARCOS SILVINO</nome>
   </result>
</results>

Postado por Lucas Teixeira

November 3rd, 2009 at 10:45 am

Postado em Grails

Com as tags , , , ,

7 Respostas a 'Renderizando um XML como resposta em grails'

Receber novos comentários por RSS or TrackBack to 'Renderizando um XML como resposta em grails'.

  1. good post do @lucastex http://is.gd/4M4oQ . ainda mais simples s fosse como aqui http://is.gd/4M4pC. xml direto na linguagem. #scala #grails

    Paulo Suzart

    3 Nov 09 at 13:33

  2. Como renderizar um XML como resposta em #grails: http://bit.ly/1iMiYk (por favor RT)

    Lucas Teixeira

    3 Nov 09 at 13:45

  3. #nice RT @lucastex: Como renderizar um XML como resposta em #grails: http://bit.ly/1iMiYk (por favor RT)

    Paulo Suzart

    3 Nov 09 at 13:46

  4. RT @lucastex: Como renderizar um XML como resposta em #grails: http://bit.ly/1iMiYk

    Wanderson Santos

    3 Nov 09 at 13:57

  5. RT @lucastex: Como renderizar um XML como resposta em #grails: http://bit.ly/1iMiYk (por favor RT)

    groovytweets

    3 Nov 09 at 13:57

  6. RT @lucastex: Como renderizar um XML como resposta em #grails: http://bit.ly/1iMiYk (por favor RT)

    Erico Marineli

    3 Nov 09 at 14:08

  7. RT @lucastex: Como renderizar um XML como resposta em #grails: http://bit.ly/1iMiYk (por favor RT)

    Gilber A. Souza

    3 Nov 09 at 14:53

Deixe um comentário

Get Adobe Flash playerPlugin by wpburn.com wordpress themes