Pergunta

Eu sou um desenvolvedor de Grails muito experiente, mas a maioria da minha experiência tem sido com a utilização do Grails para servir-se JSON / XML para um aplicativo flex e alguns sites HTML relativamente simples.

Tenho sido mergulho mais profundo em usar a integração sitemesh em grails e eu estou lutando um pouco para encontrar as melhores práticas para algumas configurações mais complexas, e estou curioso se existem bons tutoriais ou exemplos lá fora. A website originais Sitemesh não é tão útil como as tags que fala sobre não estão directamente expostos em Grails .

A Pesquisa Google é principalmente mostrando mensagens da lista de discussão antigas e algumas coisas sitemesh baunilha que está me ajudando a mover um pouco mais adiante, mas é um monte de tentativa e erro.

I totalmente entender como o g básica: layoutTitle, g: layoutHead, e g: Tag layoutBody trabalho. Aqueles são fáceis e bem documentado.

Os tipos de coisas que eu gostaria de ver exemplos para:

  • g: applyLayout - a documentação sobre este é fraca e eu não compreender totalmente os usos sugeridos nas principais docs. Como isso é diferente do que definir a propriedade meta name='layout' content='foo'?

  • g: pageProperty - alguns melhores exemplos de como puxar e propriedades de uso para o modelo principal, definindo os valores como meta tags na página que está sendo decorados. Os Grails docs sobre pageProperty mostrar apenas o atributo onload do corpo sendo trazido para a frente. Eu acho que você também pode usar valores de meta tag aqui também, qualquer outra coisa?

  • Você pode usar vários níveis de layouts SiteMesh? Meu teste parece fazer-me pensar que eu não posso, mas que parece reduzir a capacidade de reutilização. Eu acho que a resposta aqui é algum uso do g: applyLayout, mas que é onde eu estou lutando a mais.

Foi útil?

Solução

Bem, eu posso responder um pouco:

As suas primeira e terceira questões estão relacionadas, como você não pode layouts cadeia usando a tag meta.

Sua página final deve ter uma tag meta como você sugere, mas se você quer para a camada um layout em cima do outro layout, você colocar ag:. Tag applyLayout no topo do layout criança, apontando para o pai

Em seu edit.gsp, você teria que:

<meta name="layout" content="editTemplate" />

e em editTemplate.gsp, você teria que:

<g:applyLayout name="baseTemplate" >
<!-- the html for the editTemplate -->
</g:applyLayout>

para edit.gsp usaria editTemplate.gsp, que usaria baseTemplate.gsp como um layout base. Você pode encadear os conforme necessário.

Eu não usei g:. PageProperty em tudo, então eu não posso jogá-lo melhores exemplos lá, desculpe

Outras dicas

o g: pageProperty é uma coisa muito poderosa, mas muito mal documentada. Vamos dizer no meu layout I especificar onde colocar algum conteúdo como este:

<html>
<body>
<g:pageProperty name="page.header" />
</body>

Agora, na minha página que eu pode especificar algum conteúdo:

<content tag="header">
<!-- header -->
</content>

Sitemesh terá a tag de conteúdo, independentemente da posição real no HTML da página e colocá-lo onde ele precisa ir no fluxo do layout.

Ainda melhor, se dentro de minha página eu me tornar um modelo que também especifica uma área de conteúdo com uma etiqueta de "header", que irá substituir a primeira declaração, e será o conteúdo do modelo que será processado no layout final .

O Sitemesh juntamente com Grails é uma característica muito, muito poderoso. Quanto mais eu usá-lo - quanto mais eu adoro isso. Você pode decorar qualquer parte do nosso web site: você pode ter disposição para mensagens de erro, dicas de ferramentas, linhas notícias, comentários, etc, etc. Apenas a nota que você pode fazer ainda que com em suas páginas e ter vários níveis de decoração (sem necessário):

/view/layout/inline-error-message.gsp

<span class="errorMessageInSomeFancyBox">
    <span class="errorIcon"></span>
    <g:layoutBody />
<span>

/views/book/create.gsp

<%-- let's decorate our error message with some fancy box --%>
<g:applyLayout name="inline-error-message">${some.error.message}</g:applyLayout>

Veja nossa Rabbtor Showcase App por alguns exemplos muito bons em

  • criação de layouts aninhados
  • renderização modelos
  • aplicar layouts a partes específicas de uma página

. Este aplicativo é realmente uma vitrine para o nosso Rabbtor ferramenta que permite a utilização GSP fora Grails mas peças relacionadas com Sitmesh também são válidos para Grails.

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