Velocity中的ComparisonDateTool、MathTool、NumberTool

转载 2013年12月06日 11:02:15
可以从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.    



Velocity 页面四则运算

因为项目需求,在数据库里面存储的数据是美分,在前台显示要显示为美元,所以要对金额数据进行除10操作(其它除数可能需要考虑到无限小数的问题),但是因为使用Velocity进行四则运算和远程部署热部署问题...

Velocity 保留小数点后两位

velocity做除法之后,小数点一长串: #set($result = 12*100.0 / 13.0) $result% 结果为:  92.3076923076923% 要保留...
  • lonfee88
  • lonfee88
  • 2014年01月06日 18:05
  • 10548

Velocity 页面加减运算

最近在项目中需在VM页面中进行加减运算,如 #set($balance=$!{sumAmont}+$!{surcharge}-$!{depositAmount})总是报错,在页面上打印出来就是 ...
  • j2eevic
  • j2eevic
  • 2012年03月22日 17:28
  • 13336

Velocity 页面进行加减法

最近在项目中需在VM页面中进行加减运算,如 [plain] view plain copy #set($balance=$!{sumAmont}+$...

Velocity之$velocityCount-1

Velocity中使用$velocityCount+1是没问题的,但$velocityCount-1会直接打出整个字符串。 如果用#set($i=$velocityCount-1),报错Pars...

velocity模板小数点截断两位

velocity 模板能够对数值进行formate,现在有个需求是希望ne

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

可以从Apache官方网站自带的例子中查找,位置/velocity-tools-1.4-src/examples/showcase。 Apache官方网站自带的例子有下面一些: Alterna...

private MathTool

  • 2012年04月06日 12:28
  • 31KB
  • 下载

mathtool6.5.17

  • 2013年10月15日 12:56
  • 5.21MB
  • 下载

jsp,velocity,freemark页面引擎的比较

jsp,velocity,freemark页面引擎的比较
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Velocity中的ComparisonDateTool、MathTool、NumberTool
举报原因:
原因补充:

(最多只允许输入30个字)