velocity 学习进阶

1

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

web.xml

  <servlet>
  	<servlet-name>velocity</servlet-name>
  	<servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>
  	  <init-param>
  		<param-name>org.apache.velocity.properties</param-name>
  		<param-value>/WEB-INF/velocity.properties</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>velocity</servlet-name>
  	<url-pattern>*.vpage</url-pattern>
  </servlet-mapping>

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

tools.view.servlet.error.template = error.vm
tools.view.servlet.layout.directory = /
tools.view.servlet.layout.default.template =  default.vm
resource.loader = webapp
webapp.resource.loader.class = org.apache.velocity.tools.view.WebappResourceLoader
webapp.resource.loader.cache = true
webapp.resource.loader.modificationCheckInterval = 2
input.encoding = gbk
output.encoding = gbk
velocimacro.library.autoreload = true
runtime.log.logsystem.class=org.apache.velocity.runtime.log.Log4JLogSystem
runtime.log.logsystem.log4j.logger=velocity
parser.pool.size=50

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

 

2

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

修改web.xml如下

  <servlet>
  	<servlet-name>velocity</servlet-name>
  	<servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>
  	<init-param>
  		<param-name>org.apache.velocity.toolbox</param-name>
  		<param-value>/WEB-INF/tools.xml</param-value>
  	</init-param>
  	  	<init-param>
  		<param-name>org.apache.velocity.properties</param-name>
  		<param-value>/WEB-INF/velocity.properties</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>velocity</servlet-name>
  	<url-pattern>*.vpage</url-pattern>
  </servlet-mapping>
 

 

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

<?xml version="1.0" encoding="UTF-8"?>
<toolbox>
	<data>
		<key>name</key>
		<value>severus</value>
	</data>
	<tool>
		<key>myTool</key>
		<class>net.sx.velocity.tools.MyTool</class>
	</tool>
	<tool>
		<key>date</key>
		<scope>request</scope>
		<class>org.apache.velocity.tools.generic.DateTool</class>
		<parameter name="format" value="yyyy-MM-dd hh:mm:mm"/>
	</tool>
</toolbox>

其中MyTool如下

public class MyTool {
	public String getMessage() {
		return "message";
	}
	
	public String sayHello(String s){
		return "say hello by macro " + s;
	}
}

 于是vpage可以这样用

<html>
    <body >        
        Hello, $name <br>
        $myTool.message <br>
	$date.date<br>
    </body>
</html>

  输出

Hello, severus 
message 
Sun Jun 07 04:09:09 CST 2009
 

 

 

3

使用macro自定义操作函数。

可以用macro.vm集中定义。

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

 

在velocity.properties中加一句

velocimacro.library = WEB-INF/macro.vm

 然后macro.vm

#macro(sayHello $name)
 $myTool.sayHello($name)
#end

 于是可以在vpage中这样用

#sayHello("severus")

  输出

say hello by macro severus
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值