Velocity中的ComparisonDateTool、MathTool、NumberToo...

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

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

  • AlternatorTool
  • BrowserSniffer
  • ContextTool
  • CookieTool
  • DateTool
  • EscapeTool
  • ImportTool
  • LinkTool
  • ListTool
  • MathTool
  • IteratorTool
  • NumberTool
  • PagerTool
  • ParameterParser
  • RenderTool
  • ResourceTool
  • SearchTool
  • SortTool

使用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,如下所示:

函数举例显示结果$date            2008-04-22                            $date.long            2008年4月22日 下午10时58分54秒                            $date.medium_time            22:58:54                            $date.full_date            2008年4月22日 星期二                            $date.yyyy            2008                            $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').full            2 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.random            0.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,如下所示:

函数举例显示结果$number            org.apache.velocity.tools.generic.NumberTool@32c41c                            $number.currency("35")            ¥35.00                            $number.format            #0.0                            $number.locale            zh_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,如下所示:

函数举例显示结果$esc            org.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.s            esc.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.           

你可能感兴趣的:(Velocity中的ComparisonDateTool、MathTool、NumberToo...)