(三) Freemarker 常用指令

2024-06-12 08:48
文章标签 指令 常用 freemarker

本文主要是介绍(三) Freemarker 常用指令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一 常用指令

      1. assign: 自定义变量

      2. if else :流程判断指令

      3. list: 变量sequence 

      4. marco: 宏指令(自定义方法)

      5. import: 引入命名空间

      6. include:  嵌入文件指令


二 指令详解

【1. assign 指令】: 自定义变量
    1.1   自定义变量:
        <#assign hw = "hello,world"/>

    1.2  调用:用$ 调用
        hw = ${hw}
    
【2. if 指令】: 判断语句, if 相关的指令中不需要用 $ 号,直接可以从map 中获取元素
    2.1 if else 组合:
        <#if status == 0>
            status is 0
        <#else>
            status is not 0
        </#if>

    2.2 if elseif else 组合:
        <#if status ==0 >
            status = 0
        <#elseif status ==1>
            status = 1 
        <#else>
            status != 0 && status !=1
        </#if>
    
【3. list 指令】:list可以遍历sequence 类型的数据, 即 数组, List, Set
    1.1 foreach:
        <#list citys as city>
            ${city_index} --> ${city}
        </#list>

    3.2   获取遍历索引: 变量名_index 
        <#list names as name>
            ${name_index} --> ${name}
        </#list>

【4. macro 宏指令】, 类似于自定义方法
    1. 定义宏指令(定义方法)
        <#macro sayHello name1 name2>
            hello, ${name1} and ${name2}
        </#macro>

    2. 调用宏指令(调用方法)
        <@sayHello name1="zhangsan" name2="lisi"/>
    
    3. nested 指令: 代替调用宏指令时标签对之间包裹的内容
        <#macro hw>
            hello,<#nested>
        </#macro>
        <@hw>zhangsan,lisi,wangwu,zhaoliu</@hw>
        
【5. import 指令】: 引入命名空间:
    1. 引入命名空间:<#import "templateUtil.ftl" as util />
    2. 调用响应方法:<@util.printEmp employee/>
    3. 调用变量:${util.fileName}
        修改变量:<#assign fileName = "command.ftl" in util />
               ${util.fileName}
            
【6. include 】嵌入文件:
    1. 执行步骤: 
        1. 合并文件: 将被嵌入的文件的内容全部导入当前 文件
        2. 解析: 然后用freemarker 语法解析嵌入的文件片段
    2. 示例:以下是文件 hello.ftl 的文本内容:
       <#include "include.txt" />
    

三 测试结果:

[html]  view plain copy
  1. 二 指令详解  
  2.   
  3. 【1. assign 指令】: 自定义变量  
  4.     1.1   自定义变量:  
  5.         <#assign hw = "hello,world"/>  
  6.     1.2  调用:用$ 调用  
  7.         hw = ${hw}  
  8.       
  9. 【2. if 指令】: 判断语句, if 相关的指令中不需要用 $ 号,直接可以从map 中获取元素  
  10.     2.1 if else 组合:  
  11.         <#if status == 0>  
  12.             status is 0  
  13.         <#else>  
  14.             status is not 0  
  15.         </#if>  
  16.     2.2 if elseif else 组合:  
  17.         <#if status ==0 >  
  18.             status = 0  
  19.         <#elseif status ==1>  
  20.             status = 1  
  21.         <#else>  
  22.             status != 0 && status !=1  
  23.         </#if>  
  24.       
  25. 【3. list 指令】:list可以遍历sequence 类型的数据, 即 数组, List, Set  
  26.     1.1 foreach:  
  27.         <#list citys as city>  
  28.             ${city_index} --> ${city}  
  29.         </#list>  
  30.     3.2   获取遍历索引: 变量名_index  
  31.         <#list names as name>  
  32.             ${name_index} --> ${name}  
  33.         </#list>  
  34.   
  35. 【4. macro 宏指令】, 类似于自定义方法  
  36.     1. 定义宏指令(定义方法)  
  37.         <#macro sayHello name1 name2>  
  38.             hello, ${name1} and ${name2}  
  39.         </#macro>  
  40.     2. 调用宏指令(调用方法)  
  41.         <@sayHello name1="zhangsan" name2="lisi"/>  
  42.       
  43.     3. nested 指令: 代替调用宏指令时标签对之间包裹的内容  
  44.         <#macro hw>  
  45.             hello,<#nested>  
  46.         </#macro>  
  47.         <@hw>zhangsan,lisi,wangwu,zhaoliu</@hw>  
  48.           
  49. 【5. import 指令】: 引入命名空间:  
  50.     1. 引入命名空间:<#import "templateUtil.ftl" as util />  
  51.     2. 调用响应方法:<@util.printEmp employee/>  
  52.     3. 调用变量:${util.fileName}  
  53.         修改变量:<#assign fileName = "command.ftl" in util />  
  54.                ${util.fileName}  
  55.               
  56. 【6. include 】嵌入文件:  
  57.     1. 执行步骤:  
  58.         1. 合并文件: 将被嵌入的文件的内容全部导入当前 文件  
  59.         2. 解析: 然后用freemarker 语法解析嵌入的文件片段  
  60.     2. 示例:以下是文件 hello.ftl 的文本内容:  
  61.        <#include "include.txt" />  

这篇关于(三) Freemarker 常用指令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1053748

相关文章

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

Java常用注解扩展对比举例详解

《Java常用注解扩展对比举例详解》:本文主要介绍Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下... 目录一、@Controller 与 @RestController 对比二、使用 @Data 与 不使用 @Dat

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

Redis中的常用的五种数据类型详解

《Redis中的常用的五种数据类型详解》:本文主要介绍Redis中的常用的五种数据类型详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis常用的五种数据类型一、字符串(String)简介常用命令应用场景二、哈希(Hash)简介常用命令应用场景三、列表(L

python中time模块的常用方法及应用详解

《python中time模块的常用方法及应用详解》在Python开发中,时间处理是绕不开的刚需场景,从性能计时到定时任务,从日志记录到数据同步,时间模块始终是开发者最得力的工具之一,本文将通过真实案例... 目录一、时间基石:time.time()典型场景:程序性能分析进阶技巧:结合上下文管理器实现自动计时