grails-Template

<input type="button" value="report3" onclick="window.location.href='<g:createLink controller="report" action="bar3" />'"></input>
<input type="button" value="report4" onclick="window.location.href='<g:createLink controller="report" action="bar4" />'"></input>
<input type="button" value="pie1" onclick="window.location.href='<g:createLink controller="report" action="pie1" />'"></input>
<input type="button" value="pie2" onclick="window.location.href='<g:createLink controller="report" action="pie2" />'"></input>
<input type="button" value="pie3" onclick="window.location.href='<g:createLink controller="report" action="pie3" />'"></input>
<input type="button" value="xy" onclick="window.location.href='<g:createLink controller="report" action="xy" />'"></input>
<input type="button" value="scatter" onclick="window.location.href='<g:createLink controller="report" action="scatter" />'"></input>
<input type="button" value="water" onclick="window.location.href='<g:createLink controller="report" action="water" />'"></input>

一共十多行相同的button语句,虽然可以使用“拷贝”和“粘贴”的方法很快写完这些代码,但这一行行的代码长度太长,以至于超过了显示屏的长度,使得维护起来相当的困难。

于是我想使用Template来减少代码行的长度,使得代码在视线范围内,这样便于维护。过程:

(1)一般来说,以下划线开头的文件名的gsp文件都是Template,所认把第一个Template命名为_test.gsp:

<input type="button" value="${value}" onclick="window.location.href='<g:createLink controller="${control}" action="${action}" />'"></input>

可以看到,这个Template内容是否简单,包含三个变量:value、control和action。

(2)我们怎么来使用这个Template呢?

<g:render template="test" model="[value:'nulti',control:'report',action:'multi']"/>

第一个使用<g:render>标签,template为去掉下划线的Template文件名,即test,最后在model里传递Template所需要三个参数。

 

另一个例子

我们经常需要在每一个面开头捕捉一些出错信息,如下:

<g:if test="${flash.error}">
      <div class="errors">${flash.error}</div>
</g:if>

现在把它做成Template

_message.gsp
 
           <g:if test="${flash.error}">
                 <div class="errors">${flash.error}</div>
           </g:if>
           <g:if test="${request.error}">
                 <div class="errors">${request.error}</div>
           </g:if>
           <g:if test="${flash.errors}">
                 <div class="errors">
                     <g:each in="${flash.errors}" var="error">
                     ${error}<br>
                     </g:each>
                 </div>
           </g:if>
           <g:if test="${request.errors}">
                 <div class="errors">
                     <g:each in="${request.errors}" var="error">
                     ${error}<br>
                     </g:each>
                 </div>
           </g:if>

下面怎么使用呢?

<g:render template="message"/>

另外Template还能传递对象

_collection.gsp
 
                 <g:each in="${users}" var="user">
                     name: ${user?.name}<br>
                 </g:each>
<g:render template="collection" var="users" collection="${users}" />

 

最后欢迎大家访问我的个人网站:1024s​​​​​​​

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值