word模板引擎(二)方法扩展

2 篇文章 0 订阅
2 篇文章 0 订阅


word-tpl采用SPI的方式进行方法的扩展,同样也支持手动扩展

标签或者语法的扩展

该类库采用SPI的方式自动加载扩展函数,你也可以手动注册扩展函数。

1.编写函数

public class WordRunFunction implements WordTplFunction {
    @Override
    public String getName() {
        //扩展函数的方法名称
        return "wordRun";
    }

    @Override
    public void invoke(WordTpEnvironment environment, Map param, WordTplFunctionBody body) {
    //environment 环境变量,包含模板引擎的变量,运行环境的变量,
    // param 执行方法的参数
    // body 表示代码块的内容区域,如果是单行函数,则为null
        Object index = param.get("index");
        if (index != null){
            environment.setCurrentIndex(WordTpEnvironment.CURRENT_RUN_TAG,index);
        }
        try {
            if (body != null){
                String exec = body.exec();
                //获取当前代码所在的word run对象。
                XWPFRun currentRun = environment.getCurrentRun();
               if (!WordParse.checkHaveTag(exec)){
                   currentRun.setText(exec,0);
               }
            }

        } catch (Exception e) {
           throw new RuntimeException(e);
        }
    }
}

2.注册函数

  1. 采用方法注册
        FreemarkerWordTplFactory tplFactory = new FreemarkerWordTplFactory();
        tplFactory.registerFunction(new WordRunFunction());
  1. 采用SPI注册
    在jar包中新建文件 /META-INF/services/com.github.xuejike.wordtpl.tpl.WordTplFunction

文件内容填写需要扩展的类全路径

com.github.xuejike.wordtpl.tpl.functions.WordRunFunction

3.使用函数

由于我采用的是Freemarker模板引擎,那么使用方法就是使用freemarker自定义指令的方式。

<@wordRun index ="1">sssss</@wordRun>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值