Pergunta

Existe uma maneira de usar construtores de groovy para construir arquivos JSP em um Grails manutenção de aplicação coisas bastante integrado?

Para explicar melhor: por Grails padrão usa gsp arquivos que são bons, mas bastante detalhado ..

<div class="clear">
  <ul id="nav">  
    <li><g:link controller="snippets" action="list">Snippets</g:link></li>
    <li><g:link controller="users" action="list">Users</g:link></li>
    <li><g:link controller="problems" action="list">Problems</g:link></li>
    <li><g:link controller="messages" action="list">Messages</g:link></li>
  </div>
<div id="content">

Existe uma maneira de tha uso groovy.xml.MarkupBuilder iria transformar a peça anterior em

div(class:'clear') {
  ul(id:'nav') {
    li { g_link(controller:'snippets', action:'list', 'Snippets') }
// and so on

É claro g_link é inventado apenas para dar a idéia ..

Foi útil?

Solução

Faça uma busca por construtor sob a seção camada web de o guia de usuário grails. Há um exemplo lá que mostra exatamente como fazer isso usando o construtor xml.

Outras dicas

Eu não tenho uma resposta completa para você, mas eu suspeito que a chave será ter acesso aos "vista resolvedores". Numa aplicação normal de SpringMVC, estes são configurados em views.properties (ou views.xml) como se segue:

csv=com.example.MyCSVResolver
xml=com.example.MyXMLResolver
audio=com.example.MySpeechResolver

Em um aplicativo normal SpringMVC, você retornar algo como new ModelAndView(myModel, 'csv') a partir de uma ação do controlador.

Isso faria com que a classe CSVResolver a ser invocado passando-os dados no myModel. Além de conter os dados a ser processado, myModel provavelmente também conter algumas opções de formatação (por exemplo a largura das colunas).

Spring pesquisa o arquivo visualizações para uma chave correspondente ao nome de vista. Se ele não encontrar uma correspondência, por padrão, ele apenas torna um JSP com o nome da visão e passa os dados do modelo.

Agora, de volta para Grails .... lembre-se que Grails é realmente apenas uma API Groovy sobre SpringMVC e a maioria dos recursos de SpringMVC pode ser acessado a partir de Grails. Então, se você pode descobrir como modificar o arquivo visualizações, basta alterar suas ações do controlador para retornar uma instância ModelAndView apropriado, e ele deve funcionar como descrito acima.

GSP permite que você execute código arbitrário Groovy dentro <%%> colchetes. Assim, você pode ter algo como isto (exemplo empréstimo de página ligada a pelo blacktiger):

<%      StringWriter w = new StringWriter()
        def builder = new groovy.xml.MarkupBuilder(w)
        builder.html{
            head{
                title 'Log in'
            }
            body{
                h1 'Hello'
                builder.form{ }   
            } 
        }     
    out << w.toString() 
%>

Note que as chamadas acima de g: formulário de tags, e você pode passar o material adicional para isso.

Então, o que você está pedindo é certamente possível, embora eu não tenho certeza se ele vai acabar por ser uma vitória. Eu sugiro que você talvez olhar mais para TagLibs em combinação com modelos e SiteMesh Layouts -. Pode coisas definitivamente Simplifique tremendamente

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top