`

freemark 基本语法

 
阅读更多
reemarker的基本语法及入门基础

一、freemarker模板文件(*.ftl)的基本组成部分
        1. 文本:直接输出的内容部分
        2. 注释:不会输出的内容,格式为<#--  注释内容  -->
        3. 取值(插值):代替输出数据模型的部分,格式为${数据模型}或#{数据模型}
        4. ftl指令:Freemarker指令,类似于HTML标记。
                             内建指令:开始标签:<#directivename parameter>       结束标签:</#directivename>      空标签:<#directivename parameter/>   
                             自定义指令:开始标签:<@directivename parameter>       结束标签:</@directivename>      空标签:<@directivename parameter/> 
                             至于什么是内建指令,什么是自定义指令   我会在下面叙述到。



二、Freemarker语法及使用方法
        1. 取值(插值)指令及适用类型:
                (1) ${var}
                        适用类型:java中常用的八大基本类型以及我们的String引用类型,但是,freemarker中boolean类型显示时true==yes  false==no
                        示例:
                                在后台文件中定义变量
                                        String strVar = "世界你好";
                                        int intVar = 10;
                                        boolean booVar = true;
                                在页面中获取变量:
                                        String获取:<font color="red"> ${strVar} </font><br>
                                        int获取:<font color="red"> ${intVar} </font><br>
                                        boolean获取:<font color="red"> ${booVar?string("yes","no")} </font>
                                展示结果:
                                        String获取:世界你好
                                        int获取:10
                                        boolean获取:yes
                (2)${var!} 
                        适用类型:对 null 或者不存在的对象进行取值,可以设置默认值,例:${var!'我是默认值'}    即,有值时显示正常值,无值时显示默认值
                        示例:
                                在后台文件中定义变量
                                        String strVar = "世界你好";
                                        String str = null;
                                在页面中获取变量:
                                        String获取:<font color="red"> ${strVar!"我是空"} </font><br>
                                        str获取:<font color="red"> ${str!} </font><br>
                                        str获取:<font color="red"> ${str!"默认"} </font><br>
                                展示结果:
                                        String获取:世界你好
                                        str获取:
                                        str获取:默认
                (3)${封装对象.属性}
                        适用类型:对封装对象进行取值,例:${User.name}
                        示例:
                                在后台文件中封装对象User[ name,  age ]
                                        String name = "姓名";
                                        int age = 18;
                                在页面中获取变量:
                                        name获取:<font color="red"> ${User.name} </font><br>
                                        age获取:<font color="red"> ${User.age} </font><br>
                                展示结果:
                                        name获取:姓名
                                        age获取:18
                (4)${date?String('yyyy-MM-dd')}
                        适用类型:对日期格式进行取值,在这里我要强调的是,定义Date类型的变量时,java.util.Date无法输出日期,须使用java.sql.Date
                        示例:
                                在后台文件中定义变量
                                        java.sql.Date date = new Date().getTime();
                                        java.sql.Date time = new Date().getTime();
                                        java.sql.Date datetime = new Date().getTime();
                                在页面中获取变量:
                                        date获取:<font color="red"> ${date?string('yyyy-MM-dd')} </font><br>
                                        time获取:<font color="red"> ${date?string('HH:mm:ss')} </font><br>
                                        datetime获取:<font color="red"> ${date?string('yyyy-MM-dd HH:mm:ss')} </font><br>
                                展示结果:
                                        name获取:姓名
                                        age获取:18
                (5)${var?html}
                        适用类型:转义HTML内容
                        示例:
                                在后台文件中封装变量Menu[ name, model ]
                                        Menu m = new Menu(); 
                                        m.setName(" freemarker ");
                                        m.setModel("<font color = 'red'>我只是个菜单</font>");
                                在页面中获取变量:
                                        非转义获取:<font color="red"> ${m.model} </font><br>
                                        转义获取: ${m.model?html} </font><br>
                                展示结果:
                                        非转义获取:我只是个菜单
                                        转义获取:<font color = 'red'>我只是个菜单</font>
                (6)<#assign num = 100 />
                        适用类型:定义变量,支持计算和赋值
                        示例:
                                在页面中定义变量:
                                        <#assign num = 100 />
                                        num获取:<font color="red"> ${num)} </font><br>
                                        计算结果:<font color="red"> ${num * 10} </font><br>
                                展示结果:
                                        num获取:100
                                        计算结果:1000
                (7)对List集合进行取值
                        <#list  list集合  as  item> 
                               ${item}    --取值
                        </#list>
                        示例:
                                在后台文件中定义变量
                                        List<String> strList = new ArrayList<String>();
                                        strList.add("第一个值");
                                        strList.add("第二个值");
                                        strList.add("第三个值");
                                在页面中获取变量:
                                        <#list  strList  as  item> 
                                               ${item!}<br/>    --取值
                                        </#list>
                                展示结果:
                                        第一个值
                                        第二个值
                                        第三个值
                (8)对Map集合进行取值
                        <#list map?keys as key>
                               ${key}:${map[key]}
                        </#list>
                        示例:
                                在后台文件中定义变量
                                        Map<String, Object> m = new HashMap<String, Object>();
                                        m.put("name","姓名");
                                        m.put("age",18);
                                        m.put("sex","男");
                                在页面中获取变量:
                                         <#list m?keys as key>
                                                ${key}:${m[key]}
                                         </#list>
                                展示结果:
                                        name:姓名
                                        age:18
                                        sex:男
        2. 条件判断指令:
                (1) if 
                        格式:<#if 条件>
                                        输出
                                     </#if>
                        示例:
                                在页面中定义变量并判断条件:
                                        <#assign age = 18 /><br>
                                        <#if age == 18>
                                                <font color="red"> age = 18</font>
                                        </#if>
                                展示结果:
                                        age = 18
                (2) if - else 
                        格式:<#if 条件>
                                        输出
                                    <#else>
                                        输出
                                    </#if>
                        示例:
                                在页面中定义变量并判断条件:
                                        <#assign age = 20 /><br>
                                        <#if age == 18>
                                                <font color="red"> age = 18</font>
                                        <#else>
                                                <font color="red"> age != 18</font>
                                        </#if>
                                展示结果:
                                        age != 18
                (3) if - elseif - else
                        格式:<#if 条件1>
                                        输出
                                    <#elseif 条件2>
                                        输出
                                    <#else>
                                        输出
                                    </#if>
                        示例:
                                在页面中定义变量并判断条件:
                                        <#assign age = 20 /><br>
                                        <#if age &gt; 18>
                                                <font color="red">青年</font>
                                        <#elseif age == 18>
                                                <font color="red"> 成年</font>
                                        <#else>
                                                <font color="red"> 少年</font>
                                        </#if>
                                展示结果:
                                        成年
                (4) switch  --常与case break default一起使用  参数可为字符串
                        格式:<#switch var>
                                    <#case 条件1>
                                          输出
                                    <#break>
                                    <#case 条件2>
                                          输出
                                    <#break>
                                    <#default>
                                          输出
                                    </#switch>
                        示例:
                                在页面中定义变量并判断:
                                       <#switch var="星期一">
                                       <#case "星期一">
                                               油焖大虾
                                       <#break>
                                       <#case "星期二">
                                               炸酱面
                                       <#break>
                                       <#default>
                                               肯德基
                                       </#switch>
                                展示结果:
                                        油焖大虾
        3. 自定义函数、自定义指令:
                (1) 自定义函数
                        实现TemplateMthodModelEx
                (2) 自定义指令
                        实现TemplateDirectiveModel
                        示例:
                                <@自定义指令名称 入参(key-value格式) ; 出参(list格式)>
                                        运行条件
                                </@自定义指令名称>

                                PS:不同的返回值用逗号( , )间隔开

        4.常用内建函数、macro(宏指令)、function(函数指令):
                (1) 常用内建函数
                        处理字符串: 
                             substring                                          截取字符串,包头不包尾(下标)
                             cap_first                                          第一个字母大写 
                             end_with                                           以什么字母结尾    
                             contains                                            是否包含目标字符串
                             date  datetime  time                       转换成日期格式
                             starts_with                                      以什么字母开头
                             index_of                                          返回某个指定的字符串值在字符串中首次出现的位置(下标)
                             last_index_of                                  获取指定字符出现的最后位置(下标)
                             split                                                  分隔
                             trim                                                  去两端空格
                        处理数字:
                             string                                              
                             x?string("0.##")                          变成小数点后几位
                             round                                              四舍五入
                             floor                                               去掉小数点
                             ceiling                                             近1   变成整数
                        处理list:
                              first:                                              取List值第一个值
                              last:                                                取List值最后一个值
                              seq_contains:                                是否包含指定字符
                              seq_index_of:                               指定字符所在位置
                              size:                                                集合大小
                               reverse:                                          集合倒序排列
                              sort:                                                对集合进行排序
                              sort_by:                                         根据某一个属性排序
                              chunk:                                            分块处理
                        其他:
                              is_string:                                      是否为字符类型
                              is_number:                                    是否为整数类型
                              is_method:                                   是否为方法
                              ():                                                  判断整个变量
                              has_content:                                判断对象是否为空或不存在
                              eval:                                           求值
                (2) macro(宏指令)
                        调用:<@macro_name param />
                        语法:<#macro  变量名  参数>  
                                            <#nested/>  
                                    </#macro>
                (3) function(函数指令)
                        调用:${function_name(param)}
                        语法:<#function  变量名  参数>  
                                    <#return>  
                                    </#function>
               

 

分享到:
评论

相关推荐

    freemark制定excel下载模板示例

    当下载的excel格式内容比较复杂时,用程序生成excel文件就显得力不从心。这时采用excel模板化,更加便捷高效。本资源基于springboot+freemark模板做的示例。只需要了解下freemark基本语法即可。

    Freemark基础入门+深入

    1. **基本语法** Freemarker使用特定的语法来控制模板的生成。基本语法包括: - `&lt;#...&gt;` 用于包含Freemarker的所有指令和内容,外部内容将原样输出。 - `&lt;@.../&gt;` 用于调用函数。 - `var?member_function(...)`...

    freemark笔记、语法、讲解大全

    ### FreeMarker 笔记、语法、讲解大全 #### 一、FreeMarker 概述与基本概念 FreeMarker 是一个用 Java 编写的模板引擎,它基于模板来生成文本输出。这些模板可以用来生成任何格式的文件,如 HTML 页面、XML 文档、...

    Springboot 2020年开发脚手架管理系统(10.75G)

    第08讲_freemark基础语法详细讲_解及演示操作.mp4 第09讲_采用注解方式利用实体自动生成数据库表.mp4 第10讲_利用jpa进行数据库的增删改查操作.mp4 第11讲_jpa自定义查询批量删除及列表查询.mp4 第12讲_后台登录页面...

    freeMark语法

    FreeMarker支持基本的数学运算,如加、减、乘、除和取余数: - `${a + b}`:加法。 - `${a - b}`:减法。 - `${a * b}`:乘法。 - `${a / b}`:除法(结果为浮点数)。 - `${a % b}`:取余数。 ### 6. 文本处理 ...

    FreeMarker基础语法

    根据提供的文件信息,我们可以深入探讨FreeMarker的基础语法及其在模板引擎中的应用。FreeMarker是一种用于生成文本输出的模板引擎,广泛应用于Web开发中,能够帮助开发者动态生成HTML、XML等格式的内容。接下来,...

    Freemark指南

    本指南旨在全面介绍Freemark的基本概念及其使用方法,帮助读者更好地理解和运用这一工具。 #### 二、核心概念 Freemark的核心概念主要包括三个:**序列(Sequence)**、**键值对集合(Hash)**以及**命名空间...

    freemark教程

    下面将详细介绍Freemarker的基本概念、核心语法以及在实际应用中的使用方法。 一、Freemarker基本概念 1. 模板:Freemarker的工作核心是模板,它是由静态文本和动态片段组成的HTML或者其他格式的文件。动态片段会由...

    Freemark模板使用

    本教程适用于初学者,旨在快速引导你掌握Freemark的基本使用方法。我们将通过几个关键步骤来理解并实践如何在Java环境中配置和使用Freemark。 首先,你需要在项目中引入Freemark的库文件。在这个例子中,我们导入了...

    test_Freemark freemark的基础入门小程序

    在这个"test_Freemark freemark的基础入门小程序"中,我们将探讨Freemarker的基本概念、语法以及如何通过运行`Test.java`来生成`test_freemark.html`文件。 1. **Freemarker模板引擎基础**: Freemarker是基于模板...

    freemark 资料学习

    Freemarker的核心是模板语言,其基本语法包括变量表达式`${...}`、三元操作符`&lt;#if ...&gt;`、条件语句、循环结构等。例如,`${name}`会输出变量`name`的值。 2. 数据模型: Freemarker模板需要一个数据模型,通常由...

    Java项目Freemark生成静态页面及语法

    在本教程中,我们将深入探讨如何在Java项目中使用Freemarker生成静态页面,以及其基本语法。 首先,了解Freemarker的基本概念是必要的。它是一个模板语言,允许开发者用简单的标记来控制输出内容。Freemarker与后端...

    freemark开发指南详解

    1. **Freemarker基础概念** - **模板语言**:Freemarker使用的是基于文本的模板语言,它不包含任何编程语法,而是通过简单的标记来控制数据的输出。 - **数据模型**:Freemarker与Java对象交互,通过数据模型将...

    freemark学习资料(入门基础)

    本学习资料旨在帮助初学者快速掌握FreeMarker的基本概念和用法,从零基础到深入理解。 一、FreeMarker简介 FreeMarker是一个开源的、基于模板的Java库,它允许开发者通过模板语言将静态模板与数据模型结合,生成所...

    freemark模板&模版技术

    一、FreeMarker的基本概念 1. 模板:模板是FreeMarker的核心,它是HTML或者其他任何文本格式的文件,其中嵌入了FreeMarker指令和变量。这些指令和变量在运行时被替换为相应的值,生成最终的输出。 2. 数据模型:...

    freemark笔记

    #### 二、Freemarker 基础语法 **1. 变量赋值** - **语法**: `&lt;#assign name=value&gt;` - `name`: 要定义的变量名。 - `value`: 赋给变量的值。 - **示例**: ```html 创为"&gt; ``` **2. 字符串转换为 JSON** ...

    freemark 概述 教程 5分钟入门 pdf

    Freemarker是一个强大的模板引擎,常用于Web应用中的视图层开发,特别是在Java环境中。...这个“Freemarker概述教程5分钟入门...通过这个“5分钟入门pdf”,读者可以迅速掌握其基本用法,为进一步深入学习和实践打下基础。

    freemark 自定义标签 总结

    自定义标签在Freemarker中被称为`Custom Tags`,它们通过`&lt;@...&gt;`语法来调用。这些标签通常是由Java代码实现的,它们可以处理复杂的逻辑,如数据库查询、业务处理等,然后返回一个可渲染的字符串给Freemarker模板。...

    freemark使用的简单demo

    它与Java Servlet容器紧密结合,允许...通过学习和理解其基本概念、语法以及使用方法,开发者能够高效地创建动态网页,实现与后端数据的有效交互。在Java开发中,掌握Freemarker能提升开发效率,使代码更易于维护。

Global site tag (gtag.js) - Google Analytics