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

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


  • 相关阅读:
    317 随笔
    316 随笔
    315 随笔
    python 第一章
    matlab 第四章 第一节 字符串 元胞
    matlab 第三章 第二节 多维数组
    matlab 第三章
    python 循环+break continue
    Springboot 教程 导入
    matlab 第二章 第三节 数值表示、变量及表达式
  • 原文地址:https://www.cnblogs.com/opaljc/p/2459685.html
Copyright © 2020-2023  润新知