freemarker学习--语法

   公司的平台通过freemarker来生成html,需要对freemarker的语法进行熟悉以及了解;再此记录下学习的过程。

业务数据模板第二次解析用到的freemark语法如下:

  1.   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="#" οnclick="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>
name的值可以是:

local:指定模板的使用国家及语言

number_format:格式化输出数字的格式;

主要用于指定freemarker的运行环境;

<#setting number_format="#">
  • macro指令 <#macro name param1 param2 param3 ...paramN ><#macro>
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}" οnclick="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}" οnclick="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")>










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值