第一步配置 JfinalConfig
me.setMainRenderFactory(new BeetlRenderFactory());
GroupTemplate groupTemplate = BeetlRenderFactory.groupTemplate;
groupTemplate.registerTag("menu", MenuTag.class);
groupTemplate.registerTag("table", DataGridTag.class);
groupTemplate.registerTag("tr", DataGridColumnTag.class);
groupTemplate.registerTag("opt", DataGridOptTag.class);
第二步配置beetl.properties
#classpath 根路径
RESOURCE.root= /WEB-INF/pages/
#是否检测文件变化
RESOURCE.autouCheck= true
#子父标签处理
TAG.htmltag= com.htmlps.core.tag.util.HTMLNestTagSupportWrapper
第三步编写HTMLNestTagSupportWrapper
public class HTMLNestTagSupportWrapper extends HTMLTagSupportWrapper {
@Override
public void render() {
HttpServletRequest request = (HttpServletRequest) this.ctx.getGlobal("request");
TagNestContext tnc = (TagNestContext) request.getAttribute("tagContext");
if (tnc == null) {
tnc = new TagNestContext();
tnc.setTags(this.args);
request.setAttribute("tagContext", tnc);
super.render();
request.removeAttribute("tagContext");
} else {
TagNestContext child = new TagNestContext();
child.setParent(tnc);
child.setTags(this.args);
tnc.getChildren().add(child);
request.setAttribute("tagContext", child);
super.render();
// 重新设置
request.setAttribute("tagContext", child.getParent());
}
}
}
第四步编写工具类TagNestContext
public class TagNestContext {
private Object[] tags = null;
private TagNestContext parent = null;
private List<TagNestContext> children = null;
public Object[] getTags() {
return tags;
}
public void setTags(Object[] para) {
this.tags = para;
}
public TagNestContext getParent() {
return parent;
}
public void setParent(TagNestContext parent) {
this.parent = parent;
}
public List<TagNestContext> getChildren() {
if (children == null)
children = new ArrayList<TagNestContext>();
return children;
}
public void setChildren(List<TagNestContext> children) {
this.children = children;
}
}