html怎样定义函数,为ZHTML自定义函数

虽然ZCF为ZHTML内置了常见的函数,但我们仍可以根据开发的需要自定义新的函数。下面以自定义一个幂运算的函数为例来演示自定义函数的流程。

1. 新建一个类实现IFunction接口,如下所示

package com.zving.example;

import com.zving.framework.expression.core.ExpressionException;

import com.zving.framework.expression.core.IFunction;

import com.zving.framework.expression.core.IVariableResolver;

import com.zving.framework.utility.NumberUtil;

public class Pow implements IFunction {

/**

* 函数的全局ID,一般可以是类名

*/

public String getID() {

return "com.zving.example.Pow";

}

public String getName() {

return "幂运算按指定精度输出";

}

/**

* 指定函数前缀。如果有前缀,则使用函数时类似于${prefix:func(a,b)};

* 如果前缀为空或者null,则使用函数时类似于${func(a,b)}。

*/

public String getFunctionPrefix() {

return null;

}

/**

* 指定函数名

*/

public String getFunctionName() {

return "pow";

}

/**

* 指定函数的参数,模板机制会将传入的参数转换成你指定的类型

*/

public Class>[] getArgumentTypes() {

return new Class>[] { Double.class, Double.class, Integer.class };

}

/**

* 返回执行结果。其中args为传入的参数数组

*/

public Object execute(IVariableResolver resolver, Object... args) throws ExpressionException {

Double base = (Double) args[0];// 底数

Double exponent = (Double) args[1];// 指数

Integer precision = 2;// 默认精度为2

if (args.length > 2) {// 如果有第三个参数,则重置精度

precision = (Integer) args[2];

}

double result = Math.pow(base, exponent);

return NumberUtil.round(result, precision);

}

}

2. 将这个类作为一个扩展项注册到com.zving.framework.ui.zhtml.ZhtmlFunctionService,如下图所示:

1a6d9ea60d3331a23c6d9f5135a4c221.png

3. 新建一个ZHTML页面,如下所示:

FunctionTest:

pow(1,2):${ pow(1,2)}

pow(2,10):${ pow(2,10)}

pow("2",10):${ pow("2",10)}

pow("1.1","10","3"):${pow("1.1","10","3")}

base:${base}

exponent:${exponent}

precision:${precision}

pow(base,exponent,precision):${pow(base,exponent,precision)}

4. 访问这个页面,效果如下:

FunctionTest:

pow(1,2):1.0

pow(2,10):1024.0

pow("2",10):1024.0

pow("1.1","10","3"):2.594

base:15.2

exponent:3

precision:4

pow(base,exponent,precision):3511.808

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值