`
- 浏览:
422395 次
- 性别:
- 来自:
北京
-
定义页面布局(Layouts)
页面布局可以通过Grails对SiteMesh的支持来创建,有两种方法来创建页面布局,一种是在视图页面中设置名为"layout"的meta标签的值来指定需要使用的页面布局:
<html>
<head>
<meta name="layout" content="main"></meta>
</head>
<body>This is my content!</body>
</html>
现在在"grails-app/views/layouts"目录下创建名为"main.gsp"的布局就可以了!内容如下:
<html>
<head>
<title><g:layoutTitle default="An example decorator" /></title>
<g:layoutHead />
</head>
<body onload="${pageProperty(name:'body.onload')}">
<div class="menu"><!--my common menu goes here--></menu>
<div class="body">
<g:layoutBody />
</div>
</body>
</html>
这个布局使用了 GSP 标签 来将布局应用到目标页面。
GSP对于页面布局也提供了支持,这就是Layout。它是以Sitemesh为基础,同样也是GSP文件,文件位于grails-app/views/layouts。Layout定义涉及3个主要元素:
layoutTitle,输出目标页Title
layoutHead,输出目标页Head
layoutBody,输出目标页Body
使用示例:
<html>
<head>
<title><g:layoutTitle default="An example decorator" /></title>
<g:layoutHead />
</head>
<body onload="${pageProperty(name:'body.onload')}">
<div class="menu">
<!--my common menu goes here?
<div class="body">
<g:layoutBody />
</div>
</div>
</body>
</html>
其中,pageProperty,可用于输出目标页的某个属性。
对于Layout的使用,4种方式。
法1:在<head>之间使用<meta name="layout" content="main"></meta>。
法2:使用规约。通过存放位置来确定。当有多个匹配时,以详细的优先使用:
应用于Controller:grails-app/views/layouts/controller-name.gsp
Action:grails-app/views/layouts/controller-name/action-name.gsp
法3:使用Controller的layout属性
class BookController {
//该controller相关的所有view都将使用
//grails-app/views/layouts/customer.gsp为Layout
static layout = 'customer'
def list = { … }
}
法4,使用<g:applyLayout>,对内容区域、URL、template应用模板:
<g:applyLayout name="myLayout" template="bookTemplate" collection="${books}" />
<g:applyLayout name="myLayout" url="http://www.google.com" />
<g:applyLayout name="myLayout">
The content to apply a layout to
</g:applyLayout>
在GSP中使用inlcude,有以下的方式:
作为标签:<g:include controller="book" action="list"/>
或者跟applyLayout合用:
<g:applyLayout name="myLayout">
<g:include controller="book" action="list"/>
</g:applyLayout>作为方法调用:def content = include(controller:"book", action:"list")
在Layout中,我们还可以使用内容块,这将让我们可以更灵活地使用layout。它的使用分成2部分:
在Layout中使用<g:pageProperty />预留:
<div id="left1">
<g:pageProperty name="page.layout1.left.content"/>
</div>
<div id="top2">
<div id="toolbar"></div>
</div>
<div id="center2">
<g:pageProperty name="page.layout2.center.content"/>
</div>
<div id="bottom2">
<g:pageProperty name="page.layout2.bottom.content"/>
</div>
<g:pageProperty name="page.other"/>
在内容页中使用<content>填充:
<content tag="layout1.left.content"> <!-- 注意没有page前缀 -->
<div id="toc"></div>
</content>
<content tag="layout2.center.content">
<div id="terminal"></div>
</content>
<content tag="layout2.bottom.content">
<div id="helpstone"></div>
</content>
<content tag="other">
<div id="how-to" style="text-align:left;">
...
</div>
</content>
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在Grails中,控制器类通常与特定的域类关联,提供了一系列的方法来处理HTTP请求。 3. **Views**:视图层负责显示用户界面。Grails支持多种视图技术,如GSP(Groovy Server Pages)、FreeMarker等。 ### Grails开发...
- **理解Rich UI的概念**:在Grails和Flex的集成过程中,Rich UI意味着能够在不重新加载整个页面的情况下更新特定元素。这通常涉及到将UI渲染的工作卸载到客户端机器上。 - **利用Flex的Rich UI能力**:Flex通过其...
8.1.1 Grails Layout的基础知识 100 8.1.2 为系统后台管理创建 统一的decorator 103 8.2 文件上传的实现 107 8.2.1 开发表单页面 107 8.2.2 在Controller中接收文件 108 8.3 修改订单状态 109 8.4 本章小结 110 第9...
最后,文档中提到了页面布局(main layout)和特定页面(如search.gsp)的创建,这些文件通常包含HTML标记,用于定义网页的结构和内容。 综上所述,该文档覆盖了Java Web开发中的多个关键知识点,包括Grails框架的...
您需要通过在log4j部分中添加以下代码来修改Config.groovy配置文件: appenders { console name: 'stdout', layout: pattern(conversionPattern: '%m%n') } info 'org.flywaydb' 配置 默认情况下,您应该将sql文件...
GR8 联系方式这是一个基于 Grails Web 应用程序框架和的演示应用程序。 它由 Göran Ehrsson @goeh 在 2014 年 GR8Conf Europe 上首次展示。... m4 :插件cookie-layout已安装并创建了两个主题,以显示 UI 可以根据