Beetl可以自定义宏吗?类似freemarker的

bing_chuan 发布于 2014/06/22 22:45
阅读 856
收藏 1

@闲.大赋 你好,想跟你请教个问题:Beetl可以像freemarker一样使用TemplateDirectiveModel接口就能实现自定义标签的宏~~~还可以带参,方便的很~~beetl的话应该要怎么样使用?


public class CommentsDirective implements TemplateDirectiveModel {


@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void execute(Environment env, Map params, TemplateModel loopVars[],
TemplateDirectiveBody body) throws TemplateException, IOException {
CommentsService commentsService = (CommentsService) SpringContextUtil
.getBean("commentsServiceImpl");
Pagination page=null;
String contentId = TemplateTypeUtil.getString("cId", params);
Integer pageNum = TemplateTypeUtil.getInt("pageNum", params);
Integer pageMax = TemplateTypeUtil.getInt("count", params);


Map<String, TemplateModel> rootMap = new HashMap<String, TemplateModel>(
params);
if (pageNum==null) pageNum=1;
if (pageMax==null) pageMax=10;
page=commentsService.getCommentBypage(contentId, pageNum, pageMax);
if(page!=null){
rootMap.put("list_content",  DEFAULT_WRAPPER.wrap(page));
rootMap.put("hrefFormer", DEFAULT_WRAPPER.wrap(contentId+env.getGlobalVariable("suffix")));
rootMap.put("hrefLatter", DEFAULT_WRAPPER.wrap("?p="));
}
rootMap.put("list_content", DEFAULT_WRAPPER.wrap(page));
TemplateTypeUtil.addParamsToVariable(env, rootMap);

if (body != null) {
body.render(env.getOut());
}
TemplateTypeUtil.removeParamsFromVariable(env, params, rootMap);
}


}


加载中
0
闲大赋
闲大赋

可以用自定义标签,既可以用java代码实现,也可以用另外一段模板实现

http://ibeetl.com/guide/#_标签 

如:<% page(baseURL,para1,parsa2) { } %>

 http://ibeetl.com/guide/#_html标签

如:

<#page baseURL="xxxxx" para1="" /#>



返回顶部
顶部