前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Freemarker教程2(表达式和常用指令)

Freemarker教程2(表达式和常用指令)

作者头像
用户4919348
发布2019-04-02 11:39:04
1.9K0
发布2019-04-02 11:39:04
举报
文章被收录于专栏:波波烤鸭波波烤鸭

表达式

直接指定值

直接显示字符串

代码语言:javascript
复制
${'hello freemarker'}<br>

显示集合

代码语言:javascript
复制
<#list ["aa","bb","cc"] as c> 
	${c}<br>
</#list>
在这里插入图片描述
在这里插入图片描述

输出变量

集合

代码语言:javascript
复制
@RequestMapping("/hello1")
	public String hello1(Model m){
		m.addAttribute("list", Arrays.asList("LOL","DNF","CS"));
		return "index2";
	}
代码语言:javascript
复制
<#list list as x>
	${x}<br>
</#list>
在这里插入图片描述
在这里插入图片描述

Map

代码语言:javascript
复制
@RequestMapping("/hello1")
public String hello1(Model m){
	m.addAttribute("list", Arrays.asList("LOL","DNF","CS"));
	Map<String, Object> map = new HashMap<>();
	map.put("id", 12);
	map.put("name", "波波烤鸭");
	map.put("address", "深圳");
	m.addAttribute("user", map);
	return "index2";
}
代码语言:javascript
复制
<hr>
${user.id}<br>
${user['name']}<br>
${user['address']}<br>
在这里插入图片描述
在这里插入图片描述

Map包含对象

代码语言:javascript
复制
@RequestMapping("/hello2")
public String hello2(Model m){
	Map<String, Object> map = new HashMap<>();
	User user = new User();
	user.setId(4);
	user.setName("烤鸭");
	user.setAddress("深圳固戍");
	map.put("user", user);
	m.addAttribute("m", map);
	return "index3";
}
代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	hehe<br>
	${m.user.id}<br>
	${m['user'].name}<br>
	${m['user']["address"]}<br>
</body>
</html>
在这里插入图片描述
在这里插入图片描述

字符串操作

1.字符串拼接

代码语言:javascript
复制
m.addAttribute("hello", "hello freemarker");
代码语言:javascript
复制
<#--方式一 直接拼接 -->
hello${hello}<br>
<#--方式二 + -->
${"hello"+hello}<br>
<#--方式三 ""中通过${}取值-->
${"hello${hello}"}
在这里插入图片描述
在这里插入图片描述

字符串截取

代码语言:javascript
复制
<#-- hello freemark -->
${hello}<br> <#-- 显示 hello freemark -->
${hello[1]}<br> <#-- 显示 e-->
${hello[4]}<br><#-- 显示  o-->
${hello[1..4]}<br><#-- 显示 ello -->
${hello[1..3]}<br><#-- 显示 ell-->
${hello[3..6]}<br><#-- 显示 lo f-->
${hello[5..]}<br><#-- 显示 freemarker-->
在这里插入图片描述
在这里插入图片描述

集合连接

提前定义两个集合,在遍历时做集合的拼接运算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

算数运算

算数运算包含基本的四则运算和求模运算,运算符有:

代码语言:javascript
复制
    加法: +
    减法: -
    乘法: *
    除法: /
    求模 (求余): %

比如:

代码语言:javascript
复制
	${100 - x * x}
	${x / 2}
	${12 % 10}

输出

代码语言:javascript
复制
75
2.5
2

结果转换为整数

代码语言:javascript
复制
<#assign x=5/>
${(x/2)?int}<br>
${1.1?int}<br>
${1.999?int}<br>
${-1.1?int}<br>
${-1.999?int}<br>

输出:

代码语言:javascript
复制
1
1
-1
-1

比较运算符

比较运算符

替代

==

==

!=

!=

>=

gte

>

gt

<

lt

<=

lte

逻辑操作

常用的逻辑操作符:

代码语言:javascript
复制
    逻辑 或: ||
    逻辑 与: &&
    逻辑 非: !

逻辑操作符仅仅在布尔值之间有效,若用在其他类型将会产生错误导致模板执行中止

内置函数

  内建函数就像FreeMarker在对象中添加的方法一样。 要防止和实际方法和其它子变量的命名冲突,则不能使用点 (.),这里使用问号 (?)来和父对象分隔开。 比如,想要保证 path 有起始的 / ,那么可以这么来写: path?ensure_starts_with(’/’)。 path 后的Java对象(通常就是 String) 并没有这样的方法,这是FreeMarker添加的。为了简洁,如果方法没有参数, 那么就可以忽略 (),比如想要获取 path 的长度,就可以写作:path?length, 而不是 path?length()

常用函数

说明

html

显示标签内容,浏览器不渲染

cap_first

首字母大写

upper_case

转大写

lower_case

转小写

size

集合和数组的元素个数

date

仅日期部分,没有一天当中的时间部分

time

仅一天当中的时间部分,没有日期部分

datetime

日期和时间都在

演示:

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
	${mypage}<br>
	${mypage?html}<br>
	${hello?upper_case}<br>
	${hello?cap_first}<br>
	${hello?lower_case}<br>
	${list?size}<br>
	<#assign x=now>
	${x?date}<br>
	${x?time}<br>
	${x?datetime}<br>
在这里插入图片描述
在这里插入图片描述

更多内置函数见此:完整内建函数参考-官方

空值处理

处理不存在的值

!的使用

代码语言:javascript
复制
${vvv!"222"}<br><#--如果vvv为空就显示222否则显示vvv对应的值-->
在这里插入图片描述
在这里插入图片描述

??的使用

  不存在值检测操作符,这个操作符告诉我们一个值是否存在。基于这种情况, 结果是 true 或 false, ??判断变量是否为空

代码语言:javascript
复制
<#if mouse??>
  Mouse found
<#else>
  No mouse found
</#if>
Creating mouse...
<#assign mouse = "Jerry">
<#if mouse??>
  Mouse found
<#else>
  No mouse found
</#if>

输出:

在这里插入图片描述
在这里插入图片描述

常用指令

if

和java中的用法一样

代码语言:javascript
复制
	<#--定义变量age且赋值-->
	<#assign age=22>
	<#if age == 18>
		18 ....
	<#elseif age gt 18>
		192021...
	<#else>
		1516...
	</#if>

switch

和java中的switch语句一样

代码语言:javascript
复制
	<#assign i=2>
	<#switch i>
		<#case 1>
			ok
			<#break>
		<#case 2>
			no
			<#break>
		<#default>
			...	
	</#switch>

list+break

跳出循环的用法

代码语言:javascript
复制
	<#list list+list2 as x>
		<#if x=='CS'>
			<#break> <#--终止循环-->
		<#else>
		${x}<br>
		</#if>
	</#list>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年01月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 表达式
    • 直接指定值
      • 直接显示字符串
      • 显示集合
    • 输出变量
      • 集合
      • Map
      • Map包含对象
    • 字符串操作
      • 1.字符串拼接
      • 字符串截取
    • 集合连接
      • 算数运算
        • 比较运算符
          • 逻辑操作
            • 内置函数
              • 空值处理
                • !的使用
              • ??的使用
              • 常用指令
                • if
                  • switch
                    • list+break
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档