2007-04-28
实现自定义Velocity Context
Webwork的WebWorkVelocityContext默认提供了 req,res.stack,webwork,action几个内置对象,但不一定能满足我们的需要,往往,我们需要自己定义一些工具类,在velocity页面中调用,比如说,webwork并没有提供一个数据处理的内置对象,Math类使用静态方法,我们不能用简单的直接访问方式访问其中的函数,作为替代方法,我们可以写一个类,创建Math类的包装类,并确保在velocity模板中使用一个变量可以进行数学类方法调用
我们要自己定义一个类,继承VelocityContext,以便让webwork使用我们自定义的VelocityContext
其中定义了数学类Math的包装MathUtil
package ch10;
import org.apache.velocity.VelocityContext;

public class MathVelocityContext extends VelocityContext ...{
public static final String MATH="math";
public static final MathUtil O_MATH=new MathUtil();

public Object internalGet(String arg0) ...{
if(MATH.equals(arg0))...{
return O_MATH;
}else...{
return super.internalGet(arg0);
}
}
public boolean containsKey(Object key) ...{
return MATH.equals(key)||super.containsKey(key);
}
public static class MathUtil...{

public long round(double a)...{
return Math.round(a);
}
public double ceil(double a)...{
return Math.ceil(a);
}
}


}
模板:我们用$math调用包装类MathUtil
<body>
$math.round(132.1831)
$math.ceil(132.1831)
</body>
webwork.properties配置
webwork.velocity.contexts=ch10.MathVelocityContext
如果有多个VelocityContext,用“,”隔开
运行结果:
132 133.0
发表评论
- 浏览: 84493 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
Static初始化代码快访问st ...
当然啦,final型常量只能被赋值一次
-- by Chihom -
Tomcat 5.5不能使用EL表达 ...
請在web.xml修改XSD<?xml version="1.0" enc ...
-- by trowa -
一个通用的泛型GenericH ...
谢谢!使用中!
-- by sangood -
Spring AOP四种创建通知( ...
我一直想知道如何拦截某个类中特定的方法,而不是所有的方法?
-- by yourgame -
HashTable和HashMap的区 ...
这么多总结,还算你的这个不错,谢谢,学习
-- by lysmart_8






评论排行榜