博客已迁移到CSDN《https://blog.csdn.net/qq_33375499

Java模版引擎之Freemarker

freemarker是一款模版引擎,是一种基于模版生成静态文件的通用工具,它是为Java程序员提供的一个类库,它不是面向最终用户的,而是为程序员提供了一款可以嵌入他们开发产品的应用程序。

 1. 插值

  1.1 常用${var}语法进行取值

  1.2 对null、不存在对象取值${var!’设置默认值’}

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

  1.4 取值的时候进行计算、赋值:

    <#assign str=’我是自定义值’ />

    <span>${‘输出:’ + str}</span>

  1.5 Date类型格式${date?String(yyyy-MM-dd‘’)}

  1.6 转义HTML内容:${var?html}

2. 逻辑指定:if、switch

2.1 if

<#if var == ‘str1’>
var = ‘str1’
<#else>
var != ‘str1’
</#if>
<#if var ==  ‘str1’>
var = ‘str1’
<#elseif var == ’str2’>
var != ‘str2’
<#else>
var != ‘str1’
</#if>

  用<#if var??><#if>  或 <#if var?exite><#if>  判断变量是否存在

2.2 switch

<#switch var>
<#case >
case1
<#break>
<default>
other
</#switch>

3. 集合遍历

  3.1 list遍历

    <#list myList as item>

      下标:${item_index}

      值:${item}

    </#list>

  3.2 map遍历

    <#list myMap?keys as key>

      ${key} : ${map[key]}

    </#list>

4. string基本操作指令

  ${str?substring(5,8)}:截取,取头不取尾

  ${str?length}:获取长度

  ${str?upper_case}:全部转为大写

  ${str?lower_case}:全部转为小写

  ${str?index_of(‘xx’)}:查找子串第一次出现的位置

  ${str?last_index_of(‘xx’)}:查找子串最后一次出现的位置

  ${str?replace(‘a’,’xx’)}:替换

5. 自定义函数(继承TemplateMethodModelEx接口)

  5.1 创建自定义函数类

public class TemplateMethd implements TemplateMethodModelEx {
@Override
public Object exec(List list) throws TemplateModelException {
// 获取参数
SimpleSequence simpleSequence = (SimpleSequence) list.get(0);
List<BigDecimal> list1 = simpleSequence.toList();
Collections.sort(list1, (a, b) -> { return a.intValue() - b.intValue(); });
return list1;
}
}

  5.2 将自定义函数对象传到模版中

modelAndView.setViewName("index");
modelAndView.addObject("sort_int_list", new TemplateMethd());
return modelAndView;

  5.3 在模版中使用

<#assign myList=[1,4,5,2,3,7,5,9,0] />
<#list sort_int_list(myList) as item>
${item},
</#list>

6. List的指令

  6.1 排序

    <#list myList?sort as item>

      ${item_index} : ${item}

    </#list>

  6.2 反转

    <#list myList?reverse as item>

      ${item_index} : ${item}

    </#list>

  6.3 长度

    ${myList.size}

7. Freemarker内建函数

  7.1 处理字符串内建函数

    substring:字符串截取

    cap_first:首字母大写

    starts_with:是否以子串开始

    ends_with:是否以子串结尾

    index_of:查找子串第一次出现下标

    last_index_of:查找子串最后一次出现下标

    split:分隔字符串

    trim:去首位空格

    contains:是否包含子串

    date/datetime/time:字符串转换为日期格式

  7.2 处理数字的内建函数

    string:转为字符串

    x?string(“0.##”):转为小数点

    round:四舍五入

    floor:四舍五入

    ceiling:四舍五入进一

  7.3 处理List的内建函数

    first/list:取第一个/最后一个值

    seq_contains:序列是否包含该值

    seq_index_of:该值在list中第一次出现的下标

    size/reverse/sort/sort_by:大小/反转/排序/list中为一个对象,可以根据某个属性进行排序

    chunk(num):把list进行分块处理,每num为一块

  7.4 其他内建函数

    is函数:is_string/is_number/is_method(判断是否为string/number/method)

    has_content函数:判断一个对象是否是null、不存在

8. Function指令

<#function doAdd param1 param2>

<@return param1 + param2 />

</@function>

调用: ${doAdd(5, 6)}

Java模版引擎之Freemarker的更多相关文章

  1. Java模版引擎:jsp、freemarker、velocity区别

    在java领域,表现层技术主要有三种:jsp.freemarker.velocity. jsp是大家最熟悉的技术优点:1.功能强大,可以写java代码2.支持jsp标签(jsp tag)3.支持表达式 ...

  2. Java模板引擎之Freemarker

    Freemarker定义: 一款模板引擎 Freemarker是一个web图层组件不是web框架,解析服务端数据到页面 小例子: <#list 集合 as item> list标签对集合进 ...

  3. Java模板引擎之Freemarker 学习笔记 一

    什么是Freemarker Freemarker是模板引擎,不是Web框架,只是视图层的组件,官网是 https://freemarker.apache.org/ Freemarker原理 数据模型+ ...

  4. Java模板引擎之freemarker简介

  5. Springboot 系列(五)Spring Boot web 开发之静态资源和模版引擎

    前言 Spring Boot 天生的适合 web 应用开发,它可以快速的嵌入 Tomcat, Jetty 或 Netty 用于包含一个 HTTP 服务器.且开发十分简单,只需要引入 web 开发所需的 ...

  6. Spring Boot 集成 thymeleaf 模版引擎

    Spring Boot 建议使用 HTML 来完成动态页面.Spring Boot 提供了大量的模版引擎,包括 Thymeleaf.FreeMarker.Velocity等. Spring Boot ...

  7. java官网门户源码 SSM框架 自适应-响应式 freemarker 静态模版引擎

    来源:http://www.fhadmin.org/webnewsdetail3.html 前台:支持(5+1[时尚单页风格])六套模版,可以在后台切换 官网:www.fhadmin.org 系统介绍 ...

  8. Java模板引擎 FreeMarker

    @(编程) [TOC] 1. 简介 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写.它是为Java程序员提供的一个开发包.它不是面向最终用户的,而是为程序员 ...

  9. Java模板引擎Freemarker

    Java模板引擎Freemarker 1.取值(插值)指令 2.逻辑指令:if.switch 3.字符串.集合操作 4.自定义函数 5.list排序内建函数.常用指令 6.自定义指令 7.freema ...

随机推荐

  1. 【csp模拟赛3】bridge.cpp--矩阵加速递推

    题目描述 穿越了森林,前方有一座独木桥,连接着过往和未来(连接着上一题和下一题...). 这座桥无限长. 小 Q 在独木桥上彷徨了.他知道,他只剩下了 N 秒的时间,每一秒的时间里,他会向 左或向右移 ...

  2. 【概率论】4-3:方差(Variance)

    title: [概率论]4-3:方差(Variance) categories: - Mathematic - Probability keywords: - Variance - Standard ...

  3. 【概率论】1-3:组合(Combinatorial Methods)

    title: [概率论]1-3:组合(Combinatorial Methods) categories: Mathematic Probability keywords: Combination 组 ...

  4. linux下文件传输一些方法整理.

    ftp类 ftp 命令已经不推荐使用了. #基本用法 lftp sftp://[domain name] lftp sftp://theURL.org #使用不同用户名 lftp sftp://[us ...

  5. jacky解读麻省理工《计算机科学与Python编程导论》第1集

    文:@数据分析-jacky(朱元禄) (一)导言 本课程讲的中心思想就是五个字:计算机思维 Python只是辅助工具,是辅助大家理解计算机思维,仅此而已 急功近利是人性,适得其反是结果:我们看到有很多 ...

  6. [python]字典的直接赋值、浅拷贝和深拷贝解析

    1.赋值引用 b = a: a 和 b 都指向同一个对象. 2.浅拷贝 b = a.copy():  a 和 b父对象是一个独立的对象,但他们的子对象还是指向统一对象(是引用). 3.深拷贝 b = ...

  7. 【CF589 E】Another Filling the Grid

    一个很套路的容斥裸题,这里记录一下scb 的切题过程 Description 有一个 \(n\times n\) 的矩阵,你需要往每格里填一个 \([1,k]\) 的整数,使得每一行.每一列的最小值都 ...

  8. AE开发之默认滚轮缩放功能反置(C#修改注册表数据)

    ArcMap默认的滚轮缩放是向下放大,向上缩小 如果想修改成向上放大,向下缩小,直接在ArcMap-Customize-ArcMap Options里, 将最下面的Mouse Wheel and Co ...

  9. Python学习日记(三)——Python基本数据类型(运算符、int、str、tuple、dict、range)

    运算符 1.算数运算 2.比较运算 3.赋值运算 4.逻辑运算 5.成员运算 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2 ...

  10. redhat7.4安装gitlab

    1.参考官方安装指南 https://about.gitlab.com/install/#centos-7 2.遇到的问题 2.1.启动postfix出错 错误内容 Job for postfix.s ...