开发环境
- SpringSource Tool Suite 3.1.0
- Grails2.1.1
环境搭建
- 直接用STS新建一个example-bootstrap的grails项目,或者>$grails create-app exampl-bootstrap
- 将bootstrap插件添加到项目中,在官方文档上也可以看到,添加插件有两种方式:
- >$grails install-plugin
twitter-bootstrap
- 打开项目中conf/BuildConfig,在runtime中增加[runtime ":twitter-bootstrap:2.2.2"]插件依赖,>$grails compile
修改主页样式
- 引入bootstrap,打开views/layouts/main.gsp,在页头加入<r:require modules="bootstrap"/>
1 <!DOCTYPE html>
2 <!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
3 <!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]-->
4 <!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]-->
5 <!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]-->
6 <!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"><!--<![endif]-->
7 <head>
8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
9 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
10 <title><g:layoutTitle default="Grails"/></title>
11 <meta name="viewport" content="width=device-width, initial-scale=1.0">
12 <link rel="shortcut icon" href="${resource(dir: 'images', file: 'favicon.ico')}" type="image/x-icon">
13 <link rel="apple-touch-icon" href="${resource(dir: 'images', file: 'apple-touch-icon.png')}">
14 <link rel="apple-touch-icon" sizes="114x114" href="${resource(dir: 'images', file: 'apple-touch-icon-retina.png')}">
15 <link rel="stylesheet" href="${resource(dir: 'css', file: 'main.css')}" type="text/css">
16 <link rel="stylesheet" href="${resource(dir: 'css', file: 'mobile.css')}" type="text/css">
17
18 <r:require modules="bootstrap"/>
19 <g:layoutHead/>
20 <r:layoutResources />
21 </head>
......
- >$grails run-app,可以看到bootstrap的引用已经加入了
- 修改main.gsp,达到如下效果,因菜单、子菜单和页脚都是以后每个页面都需要使用的,所以,都放置在main.gsp view中,只有工作区的内容随菜单的变化而变化
1 <body>
2 <nav class="navbar navbar-fixed-top">
3 <div class="navbar-inner">
4 <div class="container-fluid">
5 <a class="brand" href="${createLink(uri: '/')}">Grails Twitter Bootstrap</a>
6
7 <div class="nav-collapse">
8 <p class="navbar-text pull-right">Logged in as <a href="#" class="navbar-link">Username</a></p>
9 <ul class="nav">
10 <li<%= request.forwardURI == "${createLink(uri: '/')}" ? ' class="active"' : '' %>>
11 <a href="${createLink(uri: '/')}">Home</a>
12 </li>
13 <g:each var="c" in="${grailsApplication.controllerClasses.sort { it.fullName } }">
14 <li class="controller">
15 <g:link controller="${c.logicalPropertyName}">${c.fullName}</g:link>
16 </li>
17 </g:each>
18 </ul>
19 </div>
20 </div>
21 </div>
22 </nav>
23
24 ......
25 </body>
1 ......
2 <div id="push"></div>
3 <hr/>
4 <div id="footer">
5 <div class="container-fluid">
6 <p>© Company 2013</p>
7 </div>
8 </div>
9
10 <r:layoutResources />
11 </body>
12 </html>
1 ......
2 <div id="wrap" class="container-fluid">
3 <div id="row" class="row-fluid">
4 <div class="span3">
5 <div class="well sidebar-nav">
6 <ul class="nav nav-list">
7 <li class="nav-header">Application Status</li>
8 <li>App version: <g:meta name="app.version"/></li>
9 <li>Grails version: <g:meta name="app.grails.version"/></li>
10 <li>Groovy version: ${org.codehaus.groovy.runtime.InvokerHelper.getVersion()}</li>
11 <li>JVM version: ${System.getProperty('java.version')}</li>
12 <li>Reloading active: ${grails.util.Environment.reloadingAgentEnabled}</li>
13 <li>Controllers: ${grailsApplication.controllerClasses.size()}</li>
14 <li>Domains: ${grailsApplication.domainClasses.size()}</li>
15 <li>Services: ${grailsApplication.serviceClasses.size()}</li>
16 <li>Tag Libraries: ${grailsApplication.tagLibClasses.size()}</li>
17 </ul>
18 <ul class="nav nav-list">
19 <li class="nav-header">Plugins List</li>
20 <g:each var="plugin" in="${applicationContext.getBean('pluginManager').allPlugins}">
21 <li>${plugin.name} - ${plugin.version}</li>
22 </g:each>
23 </ul>
24 </div>
25 </div>
26 <div class="span9">
27 <g:layoutBody/>
28 </div>
29 </div>
30 </div>
31 ......
- 因把views/index.gsp一些显示内容移到了main.gsp,所以,打开index.gsp删除重复内容,修改完的index.gsp如下
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta name="layout" content="main"/>
5 <title>Welcome to Grails</title>
6 </head>
7 <body>
8 <div id="page-body" role="main">
9 <h1>Welcome to Grails</h1>
10 <p>Congratulations, you have successfully started your first Grails application! At the moment
11 this is the default page, feel free to modify it to either redirect to a controller or display whatever
12 content you may choose. Below is a list of controllers that are currently deployed in this application,
13 click on each to execute its default action:</p>
14 </div>
15 </body>
16 </html>
1 <style type="text/css">
2 /*将页脚压低*/
3 #wrap {
4 min-height: 100%;
5 height: auto !important;
6 height: 100%;
7 /* Negative indent footer by it's height */
8 margin: 0 auto -60px;
9 }
10
11 #row {
12 padding-top: 60px;
13 }
14
15 @media (max-width: 767px) {
16 #row {
17 padding-top:0px;
18 }
19 }
20
21 #push {
22 padding-top:40px;
23 }
24 </style>
<link rel="stylesheet" href="${resource(dir: 'css', file: 'main.css')}" type="text/css">
<link rel="stylesheet" href="${resource(dir: 'css', file: 'mobile.css')}" type="text/css">
分享到:
相关推荐
elasticsearch-grails-plugin, 恢复的ElasticSearch grails插件 Elasticsearch插件插件这个项目是一个基于Elasticsearch的插件,这个项目是基于的人完成的伟大工作的。你为什么想要为原来的Elasticsearch插件提供...
- **界面美化**:通过布局和CSS美化页面,提升用户界面的设计感。 #### 三、Grails进阶 - **安全性**: - **用户认证**:实现用户登录、权限验证等功能,保障应用的安全性。 - **数据加密**:确保敏感数据的安全...
总之,"grails-datastore-gorm-plugin-support-2.0.4.RELEASE.zip"提供了一个宝贵的资源,让开发者有机会学习和实践Grails的ORM功能和Android的MVC设计模式。无论是对Grails框架的探索,还是对Android开发的深化,这...
Grails Plugin Converters 2.3.1 和 Box Java SDK v2 是两个在开源世界中备受关注的工具,它们各自在不同的领域提供强大的功能,而将两者结合使用,可以为开发者带来更丰富的功能和更高效的工作流程。 Grails ...
总的来说,"Grails plugin: Calendar"是Grails框架的一个实用扩展,它为构建时间管理功能提供了便利。通过了解和使用这个插件,开发者可以快速创建具有强大日历功能的Web应用,同时得益于Grails的灵活性和Groovy语言...
用于 Open Dolphin 的 Grails 插件 该插件可帮助您使用 grails 开发 Open-Dolphin 应用... grails-app/conf/BuildConfig.groovy .. . grails . project . dependency . resolution = { .. . plugins { .. . comp
5. **GSP(Grails Server Pages)和模板引擎**:描述 Grails 如何通过 GSP 实现视图层,以及模板和标签库的使用方法。 6. **Grails 插件系统**:介绍插件的安装、使用和开发,以及它们如何增强 Grails 应用的功能。...
标题中的"grails-plugin-controllers-2.3.3.zip"是一个Grails插件的版本包,主要关注的是Grails框架中的控制器部分。Grails是一个基于Groovy语言的开源Web应用框架,它构建在Java平台上,旨在提高开发效率。这个插件...
Grails Hibernate 搜索插件 这个插件旨在通过几个步骤将 Hibernate Search 功能集成到 Grails 中。 入门 如果你不想从 开始,你可以开始一个新的项目: 并将以下内容添加到您的依赖项中 compile("org.grails.plugins...
groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part1 共两个压缩包,解压后将扩展名.zip.bak改为.zip再次解压。
groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part2 共两个包,解压后需要将扩展名.zip.bak改名为.zip重新解压。 http://dist.springsource.com/release/STS/3.8.1.RELEASE/dist/ e4.6/spring-tool-...
如何为了充分理解用本项目实现的不同案例之间的关系,建议按以下方式使用: 通过更改Config.groovy的选项来试验不同的可用客户端模式域此应用程序中的域尝试广泛使用插件提供的映射选项。 要查找特定映射,请参阅...
本书将引导读者逐步了解Grails的基本概念和实践操作,包括环境搭建、创建第一个Grails应用、控制器和视图的使用、服务层的实现、领域模型的定义、数据库交互、GORM(Grails Object-Relational Mapping)框架的使用...
Java8 Temporal Grails插件 Java 8时态插件在Grails中集成了Java 8的新DateTime API(Instant,LocalDate,LocalTime等)。 该插件与Grails 2.5.x(支持JDK8的Grails的第一个版本)兼容。 提供将输入绑定到Java 8 ...
classpath " org.grails:grails-gradle-plugin:2.1.2 " } } version " 0.1 " group " example " apply plugin : " grails " repositories { grails . central() // creates a maven repo for the Grails Central ...
Twitter Bootstrap 可以与 Grails 结合,通过 Grails 插件 `twitter-bootstrap-grails-plugin`,方便地在 Grails 应用中使用 Bootstrap。该插件将Bootstrap资源(CSS、JS 文件)自动引入项目,同时提供Grails标签库...
- 由于Grails项目涉及GSP(Groovy Server Pages)文件,推荐使用包含JSP编辑器的Eclipse JEE版本。如果你对JSP语法熟悉且内存有限,也可选择Classic版本。 - 安装Eclipse 3.4.0 JEE版本或其他支持JSP编辑的最新...
ElasticSearch Grails 插件有一个新的维护者! 请浏览 Noam Y. Tenne fork 以获取插件源代码的新更新: 此版本的主要新功能之一是能够通过插件使用任何 gorm-datastore, 所以你不再绑定到Hibernate插件。 虽然 ...