Java模板引擎Freemarker

时间:2021-03-24 00:19:36

1、取值(插值)指令

常用${var} 语法进行取值;
对null、不存在对象取值${var!}
取包装对象的值,通过“点”语法:${User.name} 取值的时候可以进行计算、赋值
Date类型格式${date?String('yyyy-MM-dd')}
如何转义HTML内容:${var?html} 不能转义Java.Util的Date;可以转义Java.sql的Date;
日期:${dateVar?string('yyyy-MM-dd')} 如果对象为null;
${var!} 、 ${var!'我是默认值'}
不存在的变量:
missing:${sssVar!'我是默认值'}

变量的定义、赋值、运算:

//赋值&运算
<#assign a=100/>
a = <font color="red">${a}</font>
a+100=<font color = "red">${a+100}</font>

自定义对象User变量的取值:

${(userObj.name)!}:对整体加一个()括号,则先判断前面的userObj是否存在,然后判断后面的.name是否存在;

${(userObj.name)!‘我是默认值’}:Freemarker对单引号和双引号没有区别。

输出富文本:

	user.setBrief("<font color='red'>此处编辑富文本!</font>");
${(userObj.brief)}
若想将其中的html语句也输出,则:
${(userObj.brief)!?html}

集合List的遍历:

	ModelAndView mv = new ModelAndView("index");

	List<String> list = new ArrayList<String>();
list.add("a");
list.add("a");
mv.addObject("myList",list);
前台取值:
<#list myList as item>
<font color="red">${item!}</font>
</#list>

集合Map的遍历:

	ModelAndView mv = new ModelAndView("index");

	Map<String,String> map = new HashMap<String,String>();
map.put("a",1);
map.put("b",2);
mv.addObject("map",map);
前台取值:
<#list map?keys as key>
<font color="red">${key}:${map[key]}</font>
</#list>

2、逻辑指令:if、switch

	//定义一个变量
<#assign var=99/>
//if表达式
<#if var ==99>
<font color="red">var = 99 </font>
</#if> <#if var ==99>
<font color="red">var = 99 </font>
<#else>
<font color="red">var != 99</font>
</#if> //如果大于99
<#if var $gt;99>
<font color="red">var 大于 99 </font>
<#elseif var==99>
<font color="red">var = 99</font>
<#else>
<font color="red">var 小于 99</font>
</#if>
	//加两个??,判断变量是否存在,如果存在,执行里面的语句,否则不执行。
//??也等价于<#if mylist?exists>,
<#if myList??>
<#list myList as item>
${item}
</#list>
</#if>

if多条件判断:||、&&、!

	<#assign var = 'python'>

	<#if var =="python" || var =='java'>
<font color="red">python or java</font>
</#if> //?length判断字符串长度
<#if var = 'python' && var?length==6>
<font color="red">python 长度为6</font>
</#if>

Switch语法:包含switch,case,break,default;

	<#assign = var = 10 />
<#switch var>
<#case 10>
10<br/>
<#break>
<#case 100>
100<br/>
<#break>
<#default>
other
</#switch>

3、字符串、集合操作

	//定义两个变量a,b
<#assign a ='hello'/>
<#assign b ='world'/>
//连接
${a+b}
//截取
${(a+b)?substring(5,8)}
//长度
${(a+b)?length}
//大写
${(a+b)?upper_case}
//小写
${(a+b)?lower_case}
//index_of
${(a+b)?index_of('w')}
//last_index_of:单词最后一次出现的地方
${(a+b)?last_index_of('0')}
//replace
${(a+b)?replace('o','xx')}

4、自定义函数

自定义函数(整数排序 sort_int)

	<#assign myList=[2,3,1,4,6,9,7] />
//未排序
<#list myList as item>
${item},
</#list>
//排序
<#list sort_int(myList) as item>
${item},
</#list>
//sort_int从哪里来呢?
//controller;
ModelAndView mv = new ModelAndView("index");
mv.addObject("sort_int",new SortMethod());
return mv;

Java模板引擎Freemarker

5、list排序内建函数、常用指令

	<#assign myList=[2,3,1,4,6,9,7] />
//排序
<#list myList?sort as item>
${item_index}:${item}
</#list> //倒叙
<#list myList?sort?reverse as item>
//长度
${myList?size}
//下表
${myList[3]}

6、自定义指令

内置指令用#;

自定义指令用@;

7、freemarker常用内建函数

7.1 处理字符串内建函数

substring、cap_first(首字母变大写的函数)、ends_with(以…结尾)、contains(字符串是否包含目标字符串);

date、datetime、time。如何把字符串转为这三个格式的类型。

starts_with(字符串以…开始)、index_of(字符串所在的位置)、last_index_of(字符串最后所在的位置)、spilt(分割,返回的是数组)、trim(把空和空格去掉)。

7.2 处理数字的内建函数

string、x?string(“0.##”);小数点后几位

round(四舍五入)、floor(把小数点后去掉)、ceiling;

7.3 处理list的内建函数

first(第一个值)、last(最后一个值)、seq_contains(序列是否包含)、seq_index_of(序列位置);

size、reverse、sort、sort_by(如果List是个对象,则可跟进某个属性进行排序)

chunk(将List分块处理)

7.4 其他内建函数

is函数:is_string、is_number、is_method;判断变量类型;

()、has_content函数。

eval求值。

Java模板引擎Freemarker

Java模板引擎Freemarker

Java模板引擎Freemarker

Java模板引擎Freemarker

8、macro、function指令

8.1 宏macro、nested、return指令

Java模板引擎Freemarker

Java模板引擎Freemarker

Java模板引擎Freemarker

Java模板引擎Freemarker

8.2 函数function、return指令

Java模板引擎Freemarker

Java模板引擎Freemarker

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

  1. Java模板引擎 FreeMarker

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

  2. Java模板引擎FreeMarker介绍和使用

    http://blog.csdn.net/shimiso/article/details/8778793

  3. Java模板引擎之Freemarker

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

  4. Spring Boot (三)模板引擎FreeMarker集成

    一.FreeMaker介绍 FreeMarker是一款免费的Java模板引擎,是一种基于模板和数据生成文本(HMLT.电子邮件.配置文件.源代码等)的工具,它不是面向最终用户的,而是一款程序员使用的组 ...

  5. Beetl学习总结(1)——新一代java模板引擎典范 Beetl入门

    1. 什么是Beetl Beetl目前版本是2.7.0,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点.使得开发和维护模板有很好的体验.是新一代的模板引擎. ...

  6. 实现一个代码自动生成(一):模板引擎Freemarker

    目录 前言 模板引擎FreeMarker 前言 在现在的开发当中,代码生成已经是必不可少的一个功能,每个公司都会有自己的一套定制的项目骨架,而实现代码自动生成,模板引擎是必不可少的,所以在这篇博客中, ...

  7. SpringBoot系列:Spring Boot使用模板引擎FreeMarker

    一.Java模板引擎 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 在jav ...

  8. jetbrick,新一代 Java 模板引擎,具有高性能和高扩展性

    新一代 Java 模板引擎,具有高性能和高扩展性. <!-- Jetbrick Template Engineer --> <dependency> <groupId&g ...

  9. Java 模板引擎 jetbrick-template

    jetbrick-template 是一个新一代 Java 模板引擎,具有高性能和高扩展性. 适合于动态 HTML 页面输出或者代码生成,可替代 JSP 页面或者 Velocity 等模板. 指令和 ...

随机推荐

  1. 关于selenium的CI、框架……

    这段时间除了项目测试外,主要在做web自动化的事情,大致总结一下吧,总体的设计模式pageobject+pagefactory+testng的数据驱动,项目用maven来构建,使用jenkins集成, ...

  2. Google 地图 API V3 之事件

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  3. c&plus;&plus;11 &colon; Local and Unnamed Types as Template Arguments

    In N2402, Anthony Williams proposes that local types, and unnamed types be usable as template argume ...

  4. 上证A股股指跌破1900

    上证A股股指跌破1900 有钱的同学赶紧买哦,机会难得哈哈!

  5. mysql表备份及还原

    备份 导出数据库所有表结构 ? 1 mysqldump -uroot -ppassword -d dbname > db.sql 导出数据库某个表结构 ? 1 mysqldump -uroot ...

  6. 目标检测&lpar;一&rpar; R-CNN

    R-CNN全称为 Region-CNN,它是第一个成功地将深度学习应用到目标检测的算法,后续的改进算法 Fast R-CNN.Faster R-CNN都是基于该算法. 传统方法 VS R-CNN 传统 ...

  7. 线段树模板hdu 1754&colon;I Hate It

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  8. C&plus;&plus; leetcode Longest Substring Without Repeating Characters

    要开学了,不开森.键盘声音有点大,担心会吵到舍友.今年要当个可爱的技术宅呀~ 题目:Given a string, find the length of the longest substring w ...

  9. js ajax 数据获取

    在js中应用ajax 获取数据的方法,也写一个出来供复习所用 1.建议一个user.json 文件如下,保存名字为 user.json { "name": "huanyi ...

  10. Window 7 平台的IE11浏览器预览版发布

    继之前Windows 8.1 带来了IE11浏览器之后,今天Window 7 以及Windows Server 2008 R2平台的IE11浏览器预览版也已经发布. 当然这还只是一个开发者预览版,可能 ...