freemarker 模板引擎

freemarker是一款模板引擎,不是web框架,主要用于解析服务器端数据并展示在视图层。

数据模型+模板输出=HTML

基本运用

java中常用数据类型:

1、基本类型+String

2、封装的对象类型 

3、集合类型

△取值(插值)指令:

1、常用的${var}语法进行取值

2、对null、不存在的对象取值

        ${var!}

        ${var!'我是默认值'}

3、取包装对象的值,通过“点”语法:${User.name}

        ${(user.username)!} 括号对user 和username都进行空值判断,不加的话 ! 只对username属性进行空值判断

        ${(user.username)!'我是默认值'}

4、取值的时候进行计算、赋值

        赋值:<#assign a=100/>

        计算:${a + 200}

5、Date类型格式${date?string('yyyy-MM-dd')},对于java.sql.date 不需要转义

6、如何转义HTML内容${var?html}

        支持富文本, 加?html 则输出原始内容

7、集合的取值

   集合list遍历     <#list myList as item>

                                    ${item!}

                           </#list>

  集合map遍历    <#list map?keys as key>        map为map定义的key值

                              ${key}  ${map[key]}           前面是key值 后面是value值

                        </#list>

△逻辑指令 if ,switch:

1、if else

<#assign var=99>

<#if var==99>

    <font color='red'>var=99</font>

<#else>

    <font color='red'>var!=99</font>

</#if>

--------------------------------------------------------------------------------------------------------------------

大于小于判断  &gt; &lt;

<#assign var=99>

<#if var &gt; 99>

          <font color='red'>var>99</font>

</#if>

--------------------------------------------------------------------------------------------------------------------

判断是否存在(if  两个??) ,然后遍历list。如何不存在 if 中间就不会执行  ,等同于<#if  myList?exists>

<#if  myList??>

        <#list myList as item>

                ${item}

        </#list>

</#if>

2、||,&&,!逻辑或 ,逻辑与, 逻辑非

<#assign var='python'>

<#if var=='java' || var=='python'>

       <font>java or python</font>

</#if>

------------------------------------------------------------------------------------------

<#assign var='python'>

<#if var=='python' && var?length==5>

       <font> python length</font>

</#if>


3、switch语法

<#assign var=10>

<#switch var>

    <#case 10>

        10<br>

        <#break>  

    <#case 100>

        100<br>

      <#break>

      <#default>

      101<br>

</#swith>

高级技巧

△字符串、集合的操作

1、字符串常用内建函数

<#assign a='hello'>

<#assign b='world'>

连接  ${a+b}

截取  ${(a+b)?substring(5,8)}  (含首不含尾)

长度  ${a?length}

大写  ${a?upper_case}

小写  ${a?lower_case}

下标  ${(a+b)?index_of('w')}  w的下标

替换  ${(a+b)?replace('o','X')} 把o替换成X

△自定义函数

1、自定义函数  实现TemplateMethodModelEx接口,重写exec方法

2、list排序内建函数、常用指令

排序sort

<#assign myList=[4,5,1,7,3,9]/>

<#list myList? sort as item>

    ${item}

</#list>

------------------------------------------------------------------------------------------------

倒转revserse

<#assign myList=[4,5,1,7,3,9]/>

<#list myList? sort ?revserse as item>

    ${item}

</#list>

------------------------------------------------------------------------------------------------

${myList?size}   list长度

${myList[3]}    取下标为3的值


3、常用内建函数

①处理字符串内建函数

substring 、cap_first、ends_with、contains  截取字符串、首字母大写、以什么什么结尾、是否包含某个元素

date 、datetime、time  如何把字符串准换成date  datetime  time 格式的内建函数

starts_with、index_of、last_index_of、split、trim  字符串以什么什么开始、字符串所在的位置、最后所在的位置、分割(得到的是数组)、去掉两头的空

②处理数字内建函数

string、x?string("0.##")  数字转字符串、转成小数点后两位的字符串

round、floor、ceiling 四舍五入、去掉小数点、进1变成整数

③处理LIST的内建函数

first、last、seq_contains、seq_index_of  取list第一个、取list最后一个、这个序列是否包含、这个序列所在位置

 size、reverse、sort、sort_by 长度、倒转、排序、以对象某个属性排序

chunk 把这个list分块

④其他内建函数

is函数:is_string is_number is_method 是不是。。。

()、has_content

eval 求值

△自定义指令

@开头  需要在spring-servlet.xml中定义 实现TemplateDirectiveModel接口

△macro、function指令

宏macro、nested、return指令

  macro语法:    

<#macro macro_name param1 param2 paramN>

        template_code ${param1} ${param2}

</#macro>

调用

<@macro_name param1="aa" param2="bb"/>

-----------------------------------------------------------

有默认参数的

<#macro_name param1='aaa' param2='bbb'>

    nested_template${param1} ${param2}

</#macro>

调用

</@macro_name >

函数function、return指令

function 语法

<#function function _name param1 param2 paramN>

        <#return param1 +param2 >

</#function>

调用

${function _name(100,100)}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值