1. 编写函数
?
?
?
public class FtlCheckPermissionMethod implements TemplateMethodModel {
@SuppressWarnings("rawtypes")
@Override
public Object exec(List args) throws TemplateModelException {
String permissionsStr = args.get(0).toString();
String permission = args.get(1).toString();
String[] permissionsArray = permissionsStr.split(SessionUtil.PERMISSION_SPLIT);
for (String per : permissionsArray) {
if (permission.equals(per)) {
return true;
}
}
return false;
}
}
?
?
2.注册与使用
?? 有两种方式:
(1).在模板文件中注册,在模板中使用
?
?
<#assign checkPermission= "com.beyondsoft.common.util.FtlCheckPermissionMethod"?new()>
<#macro leftMenu menu>
<div class="left_block clearfix">
<div class="leftmenu">
<ul>
<#if checkPermission(permissions,"VW_ACCOUNT")>
<li <#if menu == "Account_Management">class="on"</#if>><a href="javascript:windowLocationHref('${base}/account/initAddNewAccount.do');">Account Management</a></li>
</#if>
<#if checkPermission(permissions,"VW_ROLE_MANAGEMENT")>
<li <#if menu == "Role_Management">class="on"</#if>><a href="javascript:windowLocationHref('${base}/role/initRoleManagement.do');">Role Management</a></li>
</#if>
<#if checkPermission(permissions,"VW_RESET_PASSWORD")>
<li <#if menu == "Reset_Password">class="on"</#if>><a href="javascript:windowLocationHref('${base}/reset/initReset.do');">Reset Password</a></li>
</#if>
<#if checkPermission(permissions,"VW_REVIEW_HISTORY")>
<li <#if menu == "Review_History">class="on"</#if>><a href="javascript:windowLocationHref('${base}/review/review.do');">Review History</a></li>
</#if>
</ul>
</div>
<span></span>
</div>
</#macro>
?
?
?(2).处理模板文件时注册
关键代码:
Map<String,Object> root=new HashMap<String, Object>();
root.put("getSysdate", new StringLengthMethod());
Configuration config=new Configuration();
File file=new File(templatePath); //并加载模板文件
config.setDirectoryForTemplateLoading(file); //设置包装器,并将对象包装为数据模型
config.setObjectWrapper(new DefaultObjectWrapper()); //获取模板,并设置编码方式,这个编码必须要与页面中的编码格式一致
Template template=config.getTemplate(templateName,templateEncoding); //合并数据模型与模板
template.process(root, out);
?