Ted*_*eid 40 grails groovy templates sitemesh gsp
我是一位经验丰富的Grails开发人员,但我的大多数经验都是使用grails将JSON/XML提供给flex应用程序和一些相对简单的HTML网站.
我一直在深入研究使用grame中的sitemesh集成,我正在努力寻找一些更复杂的配置的最佳实践,我很好奇是否有任何好的教程或示例.在原来的SiteMesh的网站是不是因为它谈论Grails中不直接暴露标签有用.
谷歌搜索主要显示旧的邮件列表帖子和一些vanilla sitemesh的东西,这有助于我进一步向前移动,但这是一个很多的试验和错误.
我完全理解基本的g:layoutTitle,g:layoutHead和g:layoutBody标签是如何工作的.这些都很容易并且有很好的记录
我想看到的例子:
g:applyLayout - 关于这方面的文档很薄弱,我不完全理解主文档中建议的用法.这与设置meta name='layout' content='foo'属性有何不同?
g:pageProperty - 一些关于如何通过在正在修饰的页面中将值设置为元标记来将属性拉入主模板并使用属性的更好示例.pageProperty上的grails文档仅显示正在提出的正文的onload属性.我认为你也可以在这里使用元标记值,还有其他什么?
你可以使用多个级别的sitemesh布局?我的测试似乎让我觉得我做不到,但这似乎减少了可重用性.我认为这里的答案是g:applyLayout的一些用法,但那是我最挣扎的地方.
小智 27
g:pageProperty是一个非常强大但记录很少的东西.让我们说在我的布局中我指定放置这样的内容的位置:
<html>
<body>
<g:pageProperty name="page.header" />
</body>
Run Code Online (Sandbox Code Playgroud)
现在在我的页面中我可以指定一些内容:
<content tag="header">
<!-- header -->
</content>
Run Code Online (Sandbox Code Playgroud)
Sitemesh将采用内容标记,无论页面HTML中的实际位置如何,都将其放置在布局流程中所需的位置.
更好的是,如果在我的页面中我渲染了一个模板,该模板还指定了标签为"header"的内容区域,它将覆盖第一个声明,它将是将在最终布局中呈现的模板内容.
bil*_*dev 14
好吧,我可以回答一下:
您的第一个和第三个问题是相关的,因为您无法使用元标记链接布局.
您的最终页面应该有您建议的元标记,但如果您想在另一个布局的顶部层叠布局,则将ag:applyLayout标记放在子布局的顶部,指向父级.
在你的edit.gsp中,你有:
<meta name="layout" content="editTemplate" />
Run Code Online (Sandbox Code Playgroud)
在editTemplate.gsp中,你有:
<g:applyLayout name="baseTemplate" >
<!-- the html for the editTemplate -->
</g:applyLayout>
Run Code Online (Sandbox Code Playgroud)
因此edit.gsp将使用editTemplate.gsp,它将使用baseTemplate.gsp作为基本布局.你可以根据需要链接那些.
我根本没用过g:pageProperty,所以我不能在那里给你更好的例子,对不起.