grails学习总结

1. Grails 利用约定优于配置 将框架的各个部分组合在一起。Grails 用命名直观的文件和目录代替了更容易出错的在外部配置文件中手工对这些链接进行归类的老方法。

2. GSP 不过是标准 HTML 加上一些提供动态内容的 Grails 标记而已。

3.应该看到完整的 BookController 类,带有名为 createeditlistshow 闭包(以及其他闭包)。还应该看到 grails-app/views/book 目录下有四个 GSP:create.gsp, edit.gsp, list.gsp, and show.gsp. 在这里起作用的是 “约定优于配置”。当访问 http://localhost:8080/zhang/book/list 时,就是要求BookController 填充域模型对象Book 的列表,并将列表传递给book/list.gsp 视图。请在文本编辑器中查看 BookController.groovy

class BookController {
def list(Integer max) {
    params.max = Math.min(max ?: 10, 100)
    [bookInstanceList: Book.list(params), bookInstanceTotal: Book.count()]
}
}
这个简单的闭包从 数据库中检索到 10 条 Book 记录,将它们转换为 POjO,并将它们保存在名为 bookInstanceListArrayList 内。list.gsp 页面随后将遍历列表,逐行构建 HTML 表格。

4. Grails标记

<g:each> 是常用的 Grails 标记。它将遍历列表中的每个 项。

<g:each in="${bookInstanceList}" status="i" var="bookInstance">
   <tr class="${(i % 2) == 0 ? 'even' : 'odd'}">
   
      <td><g:link action="show" id="${bookInstance.id}">
          ${fieldValue(bean: bookInstance, field: "author")}</g:link></td>

     <td>${bookInstance.name?.encodeAsHtml()}</td>
     %{--<td>${fieldValue(bean: bookInstance, field: "name")}</td>--}%
 
      <td>${fieldValue(bean: bookInstance, field: "price")}</td>
   
   </tr>
</g:each>
<g:each> 标记的 status 属性是个简单的计数器字段(请注意这个值用在下一行的 ternary 语句中,用来将 CSS 样式设为 evenodd)。 var 属性允许命名用来保存当前项的变量。如果将名称改为 foo,那么需要将后面的行改为 ${foo.author?.encodeAsHTML()},依次类推( ?. 操作符是 Groovy 用来避免 NullPointerException 的方法。它可以快捷地表示 “只有在 airline 不为 null 时才调用 encodeAsHTML() 方法,否则返回空字符串”)。

${foo.author?.encodeAsHTML()}这种方式就等价于${fieldValue(bean:bookInstance,field:"name")}.

另一个常用 Grails 标记是 <g:link>。顾名思义,它的作用是构建一个 HTML <a href> 链接。当然也可以直接使用 <a href> 标记,但是这个方便的标记还接受属性,例如 actionidcontroller。如果只考虑href 的值而不考虑它前后的 anchor 标记,那么可以改用<g:createLink> 。在 list.gsp 顶部能看到返回链接的第三个标记:<g:createLinkTo>。这个标记接受dirfile 属性而不是 controlleractionid 属性。例如:

  1. <div class="nav">  
  2.   <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>  
  3.   <span class="menuButton"><link class="create" action="create">New Book</g:link></span>  
  4. </div>  
可以交替使用两种不同的形式调用 Grails 标记 — 一种是在尖括号内包含标记,一种是仿效方法调用在大括号内包含标记。当在另一个标记的属性中调用方法时,大括号表示法(正式名称为表达式语言或 EL 语法)更合适。

<g:if>标记.

<g:if test="${flash.message}">
<div class="message" role="status">${flash.message}</div>
</g:if>
它表示的是如果flash.message不为空,就显示它。

<g:paginate> 标记

数据库包含的 Book 比当前显示的 10 条记录多时,显示 “前一个” 和 “下一个” 链接。

<g:sortableColume> 标记

使列标题变为可单击,从而支持排序。

另外还有<g:form> <g:submit>标记,还有很多可以参见http://blog.csdn.NET/yss19900512/article/details/47054609

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值