对Groovy的SimpleTemplateEngine的一点改进

Groovy的SimpleTemplateEngine使得我们很容易用Groovy作为一个模板语言,也可以用它来代替Velocity, Freemarker。SimpleTemplateEngine采用和JSP类似的语法,即<%= %>中可以嵌入groovy表达式,<% %>中可以嵌入groovy代码,其它部分都是普通文本,在普通文本也可以使用${...},就像在双引号字符串中可以使用${...}一样。但我认为SimpleTemplateEngine有一些限制,来看下面的例子:

<%def list = [ "item1", "item2", "item3" ]%>
<% for (item in list) { %>
o $item
<% } %>

输出:


o item1

o item2

o item3

注意每个item之间都有一个[color=red]空白行[/color],这是由于<%for ...%>后面的换行所导致。实际上item1前面也有两个[color=red]空白行[/color],这是由于<%def ...%>和<%for ...%>后面的两个换行符所导致。多余的空白一般不会造成什么问题,比如XML和HTML中的空白一般就不会有什么问题,但是如果我们想要用groovy模板来生成email,这样就会有问题了,我们需要能够更加精细的控制输出的内容。对于上面的例子,如果我们不想要item之间的空白行,我们可以将所有语句放在同一行,但这样会使得groovy模板很难维护。

对于该问题,我的解决方法是在SimpleTemplateEngine的基础上添加一个新的语法,<%- %>,它与<% %>相同,只是它不会输出前面的空白和尾部的空白和换行符。
<%-
def list = [ "item1", "item2", "item3" ]
%>
<%- for (item in list) { %>
o $item
<%- } %>

输出:
  o item1
o item2
o item3

这样item之间和item1之前都不会有空白行。

附件是Template引擎的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值