[Freemarker] freemarker自定义指令
来源:互联网 发布:秦川机床与人工智能 编辑:程序博客网 时间:2024/05/15 13:02
内容
笔者学习自定义指令的笔记
freemarker自定义指令 与 JSP的标签库 类似
自定义指令
<@指令名 key1=value1 key2=value2; result1,result2>
…
</@指令名>
入参:key,value键值对形式传入,入参之间用空格隔开
出参:可多个,出参变量名之间用,间隔
使用
例:在flt里传入 用户名userName 与 要验证的权限admin
后台验证是否有admin权限,结果存于result1
后台取出该用户其他权限,结果存于result2
Spring配置文件中配置自定义指令
在spring配置文件的property标签配置
key为标签名
value-ref为相应的bean,配置bean的方法:①spring配置文件中配置bean②注解方式<property name="freemarkerVariables"> <map> <entry key="role" value-ref="roleDirectiveModel"/> </map></property>
编写处理该指令的bean类
env环境变量
params:指令的入参,params.get(key)用key取value
loopVars:指令的出参,为一个数组形式
body:指令内容
除params外,其他的都能null
注意:
①获得入参时都有TemplateScalarModel类型,要用时需调用相应方法转换成Java类型
②写入出参loopVars时需写入freemarker的类型TemplateModel@Service //bean注解public class RoleDirectiveModel implements TemplateDirectiveModel { @Override //处理逻辑的函数 public void execute(Enviroment env,Map params,TemplateModel[] loopVars,TemplateDirectiveBody body) throws TemplateException,IOException { //取两个入参 TemplateScalarModel user = (TemplateScalarModel)params.get("user"); TemplateScalarModel role = (TemplateScalarModel)params.get("role); //模拟数据库操作,查看该用户的权限是否为admin if ("userName".equals(user.getAsString()) && "admin".equals(role.getAsString()) ) { //是;给第一个返回值赋值true loopVars[0] = TemplateBooleanModel.TRUE; } //模拟数据库,取出该用户其他权限 List<String> otherRights = new ArrayList<String>(); otherRights.add("add"); otherRights.add("delete"); //给出参赋值 loopVars[1] = new SimpleSequence(otherRights); //把结果输出到flt页面中 body.render(env.getOut() ); }}
flt中使用指令
传入用户名 与 要验证的权限;返回结果到result1,result2
result1返回 是否拥有该权限
result2返回 该用户其他权限
对结果进行反馈<@role user="userName" role="admin";result1,result2> <#if result1> <#-- 如果userName的权限是admin,则result1的值为true--> 我的角色是admin<br/> </#if> 我拥有的权限是: <#list reulst2 as item> @{item}, </#list></@role>
阅读全文
0 0
- [Freemarker] freemarker自定义指令
- freemarker的自定义指令
- FreeMarker自定义指令
- freemarker 自定义指令
- 6、freemarker自定义指令
- Freemarker自定义指令
- freemarker自定义指令
- freeMarker自定义指令
- Freemarker自定义指令
- freemarker -自定义指令
- Freemarker自定义指令
- freemarker自定义函数、指令
- freemarker自定义指令(七)
- Freemarker自定义指令功能应用
- Freemarker自定义方法和指令
- Freemarker自定义指令之宏
- FreeMarker 自定义指令(三)
- FreeMarker自定义指令--代码实现
- GitHub添加公钥
- jsoup爬虫项目基础用法,如何用jsoup从网上爬东西
- Android Activity之间实现数据(对象,对象集合)传递
- 2017.6.16 创建路径层
- svn
- [Freemarker] freemarker自定义指令
- POJ 2242 The Circumference of the Circle 笔记
- 要学 Python 需要怎样的基础?(找工作用)
- ibatis使用in条件
- Markdown Memo
- 快讯:中央第十三巡视组向北京大学党委反馈专项巡视情况(全文)
- FZU
- Inverting Visual Representations with Convolutional Networks论文理解
- train_test_split()函数