Java模版引擎之Freemarker
博客已迁移到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的更多相关文章
- Java模版引擎:jsp、freemarker、velocity区别
在java领域,表现层技术主要有三种:jsp.freemarker.velocity. jsp是大家最熟悉的技术优点:1.功能强大,可以写java代码2.支持jsp标签(jsp tag)3.支持表达式 ...
- Java模板引擎之Freemarker
Freemarker定义: 一款模板引擎 Freemarker是一个web图层组件不是web框架,解析服务端数据到页面 小例子: <#list 集合 as item> list标签对集合进 ...
- Java模板引擎之Freemarker 学习笔记 一
什么是Freemarker Freemarker是模板引擎,不是Web框架,只是视图层的组件,官网是 https://freemarker.apache.org/ Freemarker原理 数据模型+ ...
- Java模板引擎之freemarker简介
- Springboot 系列(五)Spring Boot web 开发之静态资源和模版引擎
前言 Spring Boot 天生的适合 web 应用开发,它可以快速的嵌入 Tomcat, Jetty 或 Netty 用于包含一个 HTTP 服务器.且开发十分简单,只需要引入 web 开发所需的 ...
- Spring Boot 集成 thymeleaf 模版引擎
Spring Boot 建议使用 HTML 来完成动态页面.Spring Boot 提供了大量的模版引擎,包括 Thymeleaf.FreeMarker.Velocity等. Spring Boot ...
- java官网门户源码 SSM框架 自适应-响应式 freemarker 静态模版引擎
来源:http://www.fhadmin.org/webnewsdetail3.html 前台:支持(5+1[时尚单页风格])六套模版,可以在后台切换 官网:www.fhadmin.org 系统介绍 ...
- Java模板引擎 FreeMarker
@(编程) [TOC] 1. 简介 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写.它是为Java程序员提供的一个开发包.它不是面向最终用户的,而是为程序员 ...
- Java模板引擎Freemarker
Java模板引擎Freemarker 1.取值(插值)指令 2.逻辑指令:if.switch 3.字符串.集合操作 4.自定义函数 5.list排序内建函数.常用指令 6.自定义指令 7.freema ...
随机推荐
- E.Substring Reverse Gym - 101755E
Substring Reverse Problem Two strings s and t of the same length are given. Determine whether it is ...
- sublime 3 text 中运行Java
1.首先确保JDK安装和配置完成 2.在JDK的bin目录下添加runJava.bat文件 @echo offcd %~dp1echo Compiling %~nx1...if exist %~n1. ...
- 2019.6.28 校内测试 T1 Jelly的难题1
这题面有点难理解,建议直接跳到题意解释那一部分(虽然我觉得解释的不大对,但按照解释来做确实能AC): 按照“题意解释”的思路来思考这个题,那么就十分的简单了: 1.首先要读入这个字符矩阵,可以用cin ...
- UVALive 5052 Genome Evolution ——(xjbg)
本以为这题n=3000,随便n方一下就能过.于是我先枚举长度len再枚举起点,不断增加新的点并删除原来的点,判断在b中的r-l+1是不是等于len即可,这个过程显然要用set维护比较方便,但是貌似卡了 ...
- 什么是文件的BOM头
1.什么是BOM? BOM是用来判断文本文件是哪一种Unicode编码的标记,其本身是一个Unicode字符("\uFEFF"),位于文本文件头部. 在不同的Unicode编码中, ...
- pwn学习日记Day6 基础知识积累
知识杂项 ELF:在计算机科学中,是一种用于二进制文件.可执行文件.目标代码.共享库和核心转储格式文件. char fgets(char buf, int bufsize, FILE stream); ...
- 课下选做作业实现mypwd
2019-2020-1 20175227 <信息安全系统设计基础> 课下选做作业实现mypwd 要求 学习pwd命令 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 ...
- XMLHttpRequest Level2 新功能
XMLHttpRequest是浏览器的接口,使得javascript可以进行HTTP(S)通信: 2008年2月,就提出了XMLHttpRequest Level 2 草案. 这个XMLHttpReq ...
- spring配置hibernate在使用oracle驱动时报错Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver '
在看到这个错误的时候就感觉有点不对劲了,在错误的结尾和引号之间还有空间,如果敏锐的点应该察觉到可能是空格问题.由于本人的粗心导致这个问题一直困扰了我接近一个上午. 在排查这个问题的时候首先想到的就是关 ...
- Centos - php5.4升级到7.1 yum安装
查看当前 PHP 版本 1 php -v 查看当前 PHP 相关的安装包,删除之 1 2 3 4 5 yum list installed | grep php yum remove php ...