Velocity中的ComparisonDateTool、MathTool、NumberTool、SortTool、EscapeTool工具

可以从Apache官方网站自带的例子中查找,位置/velocity-tools-1.4-src/examples/showcase。

Apache官方网站自带的例子有下面一些:

使用Velocity Tools的时候,一定要在toolbox.xml中指定,然后在应用的web.xml中配置。

这里,关于jar包的引用,很可能出现一种Velocity运行时异常,例如:

信息: Velocity   [warn] org.apache.velocity.runtime.exception.ReferenceException: reference : template = /templates/context.vm [line 12,column 37] : $context is not a valid reference.
2008-4-23 9:41:45 org.apache.catalina.core.ApplicationContext log
信息: Velocity   [warn] org.apache.velocity.runtime.exception.ReferenceException: reference : template = /templates/context.vm [line 16,column 37] : $context.keys is not a valid reference.
2008-4-23 9:41:45 org.apache.catalina.core.ApplicationContext log
信息: Velocity   [warn] org.apache.velocity.runtime.exception.ReferenceException: reference : template = /templates/context.vm [line 20,column 37] : $context.toolbox is not a valid reference.
2008-4-23 9:41:45 org.apache.catalina.core.ApplicationContext log
信息: Velocity   [warn] org.apache.velocity.runtime.exception.ReferenceException: reference : template = /templates/context.vm [line 24,column 37] : $context.values is not a valid reference.

关键就是jar包的选择有问题,还可能是没有加入指定的工具的jar包。

选择几个工具:

org.apache.velocity.tools.generic.ComparisonDateTool

在toolbox.xml中配置如下所示:

<tool>
    <key>date</key>
    <scope>application</scope>
    <class>org.apache.velocity.tools.generic.ComparisonDateTool</class>
    <parameter name="format" value="yyyy-MM-dd"/>
    <parameter name="depth" value="2"/>
    <parameter name="skip" value="month"/>
</tool>

date就像一个内置对象,你随时可以在.vm的Velocity模板中使用。

关于date,如下所示:

函数举例显示结果
$date2008-04-22
$date.long2008年4月22日 下午10时58分54秒
$date.medium_time22:58:54
$date.full_date2008年4月22日 星期二
$date.yyyy2008
$date.get('default','short')2008-4-22 下午10:58
$date.get('yyyy-M-d H:m:s')2008-4-22 22:58:54
$date.whenIs('2008-04-20')2 days 22 hours ago
$date.whenIs('2008-04-20').full2 days 22 hours 58 minutes 54 seconds 484 milliseconds ago
$date.whenIs('2008-04-20').days-2
$date.whenIs('2008-04-20')22 hours 58 minutes ago
$date.whenIs('2008-04-20','2008-04-20')same time
$date.difference('2008-04-20', '2008-04-20')2 days
$date.whenIs('2008-04-20').days-2

 

org.apache.velocity.tools.generic.MathTool

在toolbox.xml中配置如下所示:

<tool>
    <key>math</key>
    <scope>application</scope>
    <class>org.apache.velocity.tools.generic.MathTool</class>
</tool>

关于math,如下所示:

函数举例显示结果
$math.add("10","4")14
$math.sub("100","20")80
$math.mul("11","7")77
$math.div("100","5")20
$math.idiv("100","5")20
$math.pow("2","5")32
$math.mod("13","5")3
$math.max("99","16")99
$math.min("99","16")16
$math.abs("-99")99
/$math.cell("99.26")$math.cell("99.26")
$math.floor("99.26")99
$math.random0.7663665545444911
$math.random("1","10")2
$math.roundTo("2","5")5.0
$math.toInteger("15")15
$math.toDouble("15")15.0
$math.toNumber("15")15

org.apache.velocity.tools.generic.NumberTool

在toolbox.xml中配置如下所示:

<tool>
    <key>number</key>
    <scope>application</scope>
    <class>org.apache.velocity.tools.generic.NumberTool</class>
    <parameter name="format" value="#0.0"/>
</tool>

关于number,如下所示:

函数举例显示结果
$numberorg.apache.velocity.tools.generic.NumberTool@32c41c
$number.currency("35")¥35.00
$number.format#0.0
$number.localezh_CN
$number.format("35")35.0
$number.integer("35.47")35
$number.number("35.47")35.47
$number.percent("0.3547")35%
$number.toNumber("35.47")35.47

org.apache.velocity.tools.generic.SortTool

在toolbox.xml中配置如下所示:

<tool>
    <key>sorter</key>
    <scope>application</scope>
    <class>org.apache.velocity.tools.generic.SortTool</class>
</tool>

关于sorter,如下所示:

函数举例显示结果
$sorter.sort(['d','a','b','c'])[a, b, c, d]
$sorter.sort([5,1,12,3])[1, 3, 5, 12]

 

sorter工具,可以对指定的集合进行排序,如List,Array,Map等等。

org.apache.velocity.tools.generic.EscapeTool

在toolbox.xml中配置如下所示:

<tool>
    <key>esc</key>
    <scope>application</scope>
    <class>org.apache.velocity.tools.generic.EscapeTool</class>
</tool>

关于esc,如下所示:

函数举例显示结果
$escorg.apache.velocity.tools.generic.EscapeTool@e09a07
$esc.b/
$esc.backslash/
$esc.d$
$esc.dollar$
$esc.e!
$esc.exclamation!
$esc.h#
$esc.hash#
$esc.q"
$esc.quote"
/esc.sesc.s
$esc.singleQuote'
$esc.html("$esc.backslash")/
$esc.url("shirdrn.org/users/index.vm?id=1&name=异域王者")shirdrn.org%2Fusers%2Findex.vm%3Fid%3D1%26name%3D%E5%BC%82%E5%9F%9F%E7%8E%8B%E8%80%85
$esc.sql("SELECT * FROM PERSON WHERE ID='2008042319831'")SELECT * FROM PERSON WHERE ID=''2008042319831''
/$esc.java()[说明]Escapes the characters in a String using Java String rules.
/$esc.javascript()[说明]Escapes the characters in a String using JavaScript String rules.
/$esc.xml()[说明]Escapes the characters in a String using XML entities.
/$esc.propertyKey()[说明]Escapes the characters in a String using java.util.Properties rules for escaping keys.
/$esc.propertyValue()[说明]Escapes the characters in a String using java.util.Properties rules for escaping values.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值