`

velocity 学习进阶

 
阅读更多

转:http://gatusso52.iteye.com/blog/403439

1使固定后缀名的所有页面都被velocity渲染

 

web.xml

 

Java代码  收藏代码
  1. <servlet>  
  2.     <servlet-name>velocity</servlet-name>  
  3.     <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>  
  4.       <init-param>  
  5.         <param-name>org.apache.velocity.properties</param-name>  
  6.         <param-value>/WEB-INF/velocity.properties</param-value>  
  7.     </init-param>  
  8. </servlet>  
  9. <servlet-mapping>  
  10.     <servlet-name>velocity</servlet-name>  
  11.     <url-pattern>*.vpage</url-pattern>  
  12. </servlet-mapping>  

 

其中velocity.properties(注意classloader和encoding)

 

Java代码  收藏代码
  1. tools.view.servlet.error.template = error.vm  
  2. tools.view.servlet.layout.directory = /  
  3. tools.view.servlet.layout.default.template =  default.vm  
  4. resource.loader = webapp  
  5. webapp.resource.loader.class = org.apache.velocity.tools.view.WebappResourceLoader  
  6. webapp.resource.loader.cache = true  
  7. webapp.resource.loader.modificationCheckInterval = 2  
  8. input.encoding = gbk  
  9. output.encoding = gbk  
  10. velocimacro.library.autoreload = true  
  11. runtime.log.logsystem.class=org.apache.velocity.runtime.log.Log4JLogSystem  
  12. runtime.log.logsystem.log4j.logger=velocity  
  13. parser.pool.size=50  

 

 这样所有.vpage都经过velocity渲染

 

 

 

2

 

还可以使用tools.xml集中加引用

 

修改web.xml如下

 

Xml代码  收藏代码
  1. <servlet>  
  2.     <servlet-name>velocity</servlet-name>  
  3.     <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>  
  4.     <init-param>  
  5.         <param-name>org.apache.velocity.toolbox</param-name>  
  6.         <param-value>/WEB-INF/tools.xml</param-value>  
  7.     </init-param>  
  8.         <init-param>  
  9.         <param-name>org.apache.velocity.properties</param-name>  
  10.         <param-value>/WEB-INF/velocity.properties</param-value>  
  11.     </init-param>  
  12. </servlet>  
  13. <servlet-mapping>  
  14.     <servlet-name>velocity</servlet-name>  
  15.     <url-pattern>*.vpage</url-pattern>  
  16. </servlet-mapping>  

 

 

 

于是可以在tools.xml定义变量、velocity提供的类、以及自己定义的类。下面分别举例

 

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <toolbox>  
  3.     <data>  
  4.         <key>name</key>  
  5.         <value>severus</value>  
  6.     </data>  
  7.     <tool>  
  8.         <key>myTool</key>  
  9.         <class>net.sx.velocity.tools.MyTool</class>  
  10.     </tool>  
  11.     <tool>  
  12.         <key>date</key>  
  13.         <scope>request</scope>  
  14.         <class>org.apache.velocity.tools.generic.DateTool</class>  
  15.         <parameter name="format" value="yyyy-MM-dd hh:mm:mm"/>  
  16.     </tool>  
  17. </toolbox>  

 

其中MyTool如下

 

Java代码  收藏代码
  1. public class MyTool {  
  2.     public String getMessage() {  
  3.         return "message";  
  4.     }  
  5.       
  6.     public String sayHello(String s){  
  7.         return "say hello by macro " + s;  
  8.     }  
  9. }  

 

 于是vpage可以这样用

 

Html代码  收藏代码
  1. <html>  
  2.     <body >          
  3.         Hello, $name <br>  
  4.         $myTool.message <br>  
  5.     $date.date<br>  
  6.     </body>  
  7. </html>  

 

  输出

 

Html代码  收藏代码
  1. Hello, severus   
  2. message   
  3. Sun Jun 07 04:09:09 CST 2009  

 

 

 

 

 

3

 

使用macro自定义操作函数。

 

可以用macro.vm集中定义。

 

tools.xml集中加引用,macro.vm中集中加函数。

 

 

 

在velocity.properties中加一句

 

Java代码  收藏代码
  1. velocimacro.library = WEB-INF/macro.vm  

 

 然后macro.vm

 

Java代码  收藏代码
  1. #macro(sayHello $name)  
  2.  $myTool.sayHello($name)  
  3. #end  

 

 于是可以在vpage中这样用

 

Html代码  收藏代码
  1. #sayHello("severus")  

 

  输出

 

Java代码  收藏代码

say hello by macro severus

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics