freemarker学习--语法
来源:互联网 发布:ssd优化工具 编辑:程序博客网 时间:2024/06/07 08:03
公司的平台通过freemarker来生成html,需要对freemarker的语法进行熟悉以及了解;再此记录下学习的过程。
业务数据模板第二次解析用到的freemark语法如下:
- Freemark常用指令
- 分支控制-<#if></#if>
1)checkbox为Boolean型值
<#if checkbox> <th> <input id="chkall" type="checkbox"></th> </#if>
2)if的嵌套使用以及<#if><#else></#if>
<#if permission.xxx> <th> <a href="#" onclick="linkAjax(this)" action="${pageURL}&${tableIdCode}__ns__=ynbh"> 院内编号<#if (sortField?? && sortField=="")><#if (orderSeq=="ASC")>↑<#else>↓</#if></#if> </a> </th> </#if>
- 循环迭代 <#list items as item>
items 是一个对象集合,item为当前循环的值,item_index为当前变量的索引值,item_has_next是否存在下一个对象
1)循环输出对象集合
<#list filterFields as field> <li tabid="${field.key}" <#if field.key ==filterKey> class="l-selected"</#if>> <a href="${field.url}" title="${field.name}">${field.desc}</a> </li> </#list>2)使用了item_index
<#list manageFields as manage> <@genToolBar gendex='${manage_index}' manage=manage managePermission=managePermission actionUrl=actionUrl/> </#list>
- 不解析指令 <#noparse></#noparse>
- assign指令 <#assign name=value[in namespacehash]>
<#assign conditionFields=bpmDataTemplate.conditionField?eval><#assign filterFields=bpmDataTemplate.filterField?eval><#assign manageFields=bpmDataTemplate.manageField?eval>
- setting指令 <#setting name=value>
local:指定模板的使用国家及语言
number_format:格式化输出数字的格式;
主要用于指定freemarker的运行环境;
<#setting number_format="#">
- macro指令 <#macro name param1 param2 param3 ...paramN ><#macro>
name:用户自定义指令的名称;
param1 param2 param3 ...paramN :入口参数
<#--管理列--><#macro genManage mindex manage managePermission actionUrl pk> <#--编辑--> <#if manage.name == 'edit' > <#if managePermission['${mindex}_edit']> <a class="link edit" action="${actionUrl.edit}&__pk__=${pk}&__dbomFKName__=${dbomFKName}&__dbomFKValue__=${dbomFKValue}" onclick="openLinkDialog({scope:this,isFull:false})" href="#">${manage.desc}</a> </#if> <#--删除--> <#elseif manage.name == 'del' > <#if managePermission['${mindex}_del']> <a class="link del" href="${actionUrl.del}&__pk__=${pk}">${manage.desc}</a> </#if> <#--明细--> <#elseif manage.name == 'detail' > <#if managePermission['${mindex}_detail']> <a class="link detail" action="${actionUrl.detail}&__pk__=${pk}" onclick="openLinkDialog({scope:this,isFull:false})" href="#">${manage.desc}</a> </#if> </#macro>使用:
<@genManage mindex='${manage_index}' manage=manage managePermission=managePermission actionUrl=actionUrl pk=data.ID/>
2.表达式
1)表达式可以放置在${},表名要输出表达式的值 ,${data.htlx}
2)表达式也可以页标签结合,<#if manage.name == 'edit' >
2.1直接指定值:略
2.2输出变量值
1)顶层变量:${pk}
2)list集合:${item[2]}输出第三个集合元素
3)Map:${actionUrl.print}或${actionUrl["print"]}
2.3 算术运算符:+,-,*,/,%
${data_index+1}
2.4比较运算符: = == ,!=,> gt,< it,>= gte ,<= ite
2.5逻辑运算符:&&,||,!
2.6内建函数:?函数名称
?size:集合的元素个数<#if bpmDataTemplate.list?size==0>?eval:把字符当ftl代码看<#assign displayFields=bpmDataTemplate.displayField?eval>?if_exists:f_exists用来打印东西时用到,如果存在打印,不存在打印空字符串i
<#if actionUrl.start?if_exists>??:用在逻辑判断<#if (sortField?? && sortField=="xxx")>
0 0
- FreeMarker常用语法学习
- freemarker学习--语法
- Freemarker学习笔记二—基本语法
- freemarker语法
- freemarker语法
- freemarker语法
- freemarker语法
- freemarker语法
- FreeMarker 语法
- Freemarker语法
- freemarker语法
- freemarker语法
- freemarker语法
- freeMarker语法
- freemarker语法
- freemarker语法
- freemarker语法
- 两步掌握freemarker模板引擎之语法学习
- RabbitMQ的消息路由基本讲解
- 差分约束简述
- 谁获得了最高奖学金
- Nagios
- 2015 ICCV以及ICCV Workshop中有关Action Units(AU)检测和Facial landmark检测的文章总结
- freemarker学习--语法
- 《Java高并发程序设计》学习 --7.10 多个Actor同时修改数据:Agent
- 1039字符消除
- Go学习笔记(四)基本数值类型
- ACM-称硬币
- 网络编程_UDP协议发送和接收数据代码优化
- leetcode [Number of 1 Bits]//待整理多种解法
- android中的文件操作详解以及内部存储和外部存储
- Python中的with…as…语法