Usando construtores HTML em Grails em vez de GSP
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 ..
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