实现自定义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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值