Apache FreeMarker

2021-04-24 05:27

阅读:541

标签:herf   prefix   ram   对象   bcd   efi   ril   判断   case   

基本语法

${…}:
    称为interpolations,FreeMarker会在输出时用实际值进行替代。

:
    FTL标记(FreeMarker模板语言标记),类似于HTML标记,为了与HTML标记区分

:
    宏,自定义标签


1, 文本: 直接输出的部分

2, 注释:  格式部分,不会输出

3, 插值: 即 ${} 或 #{} 格式的部分,将使用数据模型中的部分替代输出

    FreeMarker的插值有如下两种类型:
        1, 通用插值 ${}
        2, 数字格式化插值: #{expr} 或 #{expr;format}

    通用插值:

        对于通用插值,又可以分为以下4种情况:
        
        1, 插值结果为字符串值: 直接输出表达式结果

            字符串输出: ${"Hello ${name}"} / ${"Hello " + name}

            字符串截取: 
                通过下标直接获取下标对应的字母: ${name[2]}
                起点下标..结尾下标截取字符串: ${name[0..5]}

        2, 插值结果为数字值: 根据默认格式将表达式结果转换成文本输出
            
            ${answer?string.number} //42
            ${answer?string.percent}    //4200%

        3, 插值结果为日期值: 根据默认格式将表达式结果转换成文本输出
            ${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")}   //2008-04-08 08:08:08 Pacific Daylight Time
            ${lastUpdated?string("EEE, MMM d, yy")} //Tue, Apr 8, 03
            ${lastUpdated?string("EEEE, MMMM dd, yyyy, hh:mm:ss a '('zzz')'")}  //Tuesday, April 08, 2003, 08:08:08 PM (PDT)

        4, 插值结果为布尔值: 根据默认格式将表达式结果转换成文本输出
            
            ${foo?string("yes", "no")}  //yes

    数字格式化插值:

        数字格式化插值可采用#{expr;format}形式来格式化数字,其中format可以是:
            mX:小数部分最小X位
            MX:小数部分最大X位
            
            #{x; m1M2}  //4.0

4, FTL指令: FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出 

    在FreeMarker中,使用FTL标签来使用指令,FreeMarker有3种FTL标签,这和HTML标签是完全类似的:
        1, 开始标签: 
        2, 结束标签: #directivename>
        3, 空标签: 

        使用标签时前面的符号 # 也可能变成 @, 如果该指令是一个用户指令而不是系统内建指令时, 应将 # 符号改成 @ 符号

    :
        在前面已经使用了多次,它用于为该模板页面创建或替换一个顶层变量

    :
        用来设置整个系统的一个环境: 

    比较运算符:
        
            "*" : ${number1 * number2}
        
            "/" : ${number1 / number2}
        #if>

    内建函数:
        
            第一个字母大写:${data?cap_first}
            所有字母小写:${data?lower_case}
            所有字母大写:${data?upper_case}
            html:对字符串进行HTML编码
            trim:去掉字符串前后的空白字符
        
            数值取整数:${floatData?int}
        获取集合的长度:${users?size}
        时间格式化:${dateTime?string("yyyy-MM-dd")}

    空判断和对象集合:

        !   指定缺失变量的默认值;一般配置变量输出使用
        ??   判断变量是否存在。一般配合if使用 #if>

        
        
            ${user.id} - ${user.name}
        #list>
        
            ${user!"变量为空则给一个默认值"}
        #if>

    Map集合:
        

            直接通过 Key 获取 Value 值: ${mapData["name"]}

            通过Key遍历Map:
                
                    Key: ${key} - Value: ${mapData[key]}
                #list>

            通过Value遍历Map:
                
                    Value: ${value}
                #list>

    List集合:
        
        ${value}#list>

    include指令:
        引入其他文件:

    macro宏指令:

        
            定义无参数的宏macro -- ${name}
        #macro>
        使用宏macro: 
    
        
            定义带参数的宏macro -- ${a+b+c}
        #macro>
        使用带参数的宏macro: 

    noparse指令:
        指定FreeMarker不处理该指定里包含的内容
        …#noparse>

Springboot + Freemarker 集成配置

org.springframework.boot  
    spring-boot-starter-freemarker  

Freemarker 页面目录配置

spring:
    mvc:
        view:
            prefix: /templates/
            suffix: .ftl

Apache FreeMarker

标签:herf   prefix   ram   对象   bcd   efi   ril   判断   case   

原文地址:https://www.cnblogs.com/loveer/p/12235903.html


评论


亲,登录后才可以留言!