扩展beetl方法步骤
扩展includeTag:
实现方式:
继承IncludeTag,当目标模板不存在时调用父类加载模板。
参数说明: 1:目标模板名称 2: 额外参数3: 默认模板
java扩展函数实现
package cn.twh.wall.beetl.tag;
import org.beetl.core.exception.BeetlException;
import org.beetl.ext.tag.IncludeTag;
/**
* include 某个文件,如果模板存在则引入,不存在则使用默认的。【默认的不存在则抛出异常】
* 父类参数 : 1:模板名称 2: 额外参数
* 本类增加参数 : 3: 默认模板
* 不满足3参数时与原始include一致
*
* @author TWH
*/
public class IncludeWithDefaultTag extends IncludeTag {
private static final Logger logger =
@Override
public void render() {
if (this.args.length == 3) {
Object useDefault = this.args[2];
this.args = new Object[]{this.args[0], this.args[1]};
try {
super.render();
} catch (BeetlException e) {
if (useDefault.equals(this.args[0])) {
throw e;
} else {
if (BeetlException.TEMPLATE_LOAD_ERROR.equals(e.detailCode)) {
this.args[0] = useDefault;
super.render();
} else {
throw e;
}
}
}
} else {
super.render();
}
}
}
beetl.properties配置
## 标签类
# 此处覆盖原始的include 增加一个新功能 失败时使用默认模板 参数为3个时,第三个参数为不存在该模板时使用的模板。
TAG.include=cn.twh.wall.beetl.tag.IncludeWithDefaultTag
beetl模板使用方式:
<% include("item:"+Wall_Api+"_Failed",{},"comm:DefaultFailed"){} %>
公共模板:
{
"respcd": "9999",
"resptx": "交易调用失败,DefaultWall",
}
特殊Api模板:
{
"respcd": "9999",
"resptx": "该客户为黑名单客户",
}