自定义指令
语法:
1. 指令以@开头
2. 传入的多个参数以空格分隔
3. 参数与返回值之间以分号间隔
4. 多个返回值以逗号分隔
代码实现:
1. 创建自定义指令接口TemplateDirectiveModel实现类
2. 实现接口的execute()方法
env: 环境变量
params: 指令参数key=value对
loopVars: 循环变量
body: 指令内容
除了params,其他都能为null
public void execute(Environment env, Map params, TemplateMode[] loopVars, TemplateDirectiveBody body) throws TemplateException, IOExecption {
TemplateScalarModel param1 = (TemplateScalarModel) params.get("param1"); //获取指令参数值
TemplateScalarModel param2 = (TemplateScalarModel) params.get("param2");
loopVars[0] = TemplateBooleanModel.TRUE; //设定指令返回值
loopVars[1] = new SimpleSequence(list);
body.render(env.getOut()); //返回指令执行结果
}
3. 在Spring中配置freemarkerVariables
<property name="freemarkerVariables">
<map>
<entry key="directiveName" value-ref="directiveBeanId" />
</map>
</property>
自定义指令
需求:用户123456是否拥有admin角色,并且返回admin权限。
//前端
//自定义指令用“@”开始。
<@role user='123456' role='admin';result1,result2>
<#if result1>我的角色是:admin</#if>
我拥有的权限是:<#list result2 as item>${item!}</#list>
</@role>
//后端