${'hello freemarker'}<br>
<#list ["aa","bb","cc"] as c>
${c}<br>
#list>
@RequestMapping("/hello1")
public String hello1(Model m){
m.addAttribute("list", Arrays.asList("LOL","DNF","CS"));
return "index2";
}
<#list list as x>
${x}<br>
#list>
@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";
}
<hr>
${user.id}<br>
${user['name']}<br>
${user['address']}<br>
@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";
}
<html>
<head>
<meta charset="UTF-8">
<title>Insert title heretitle>
head>
<body>
hehe<br>
${m.user.id}<br>
${m['user'].name}<br>
${m['user']["address"]}<br>
body>
html>
m.addAttribute("hello", "hello freemarker");
<#--方式一 直接拼接 -->
hello${hello}<br>
<#--方式二 + -->
${"hello"+hello}<br>
<#--方式三 ""中通过${}取值-->
${"hello${hello}"}
<#-- 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-->
算数运算包含基本的四则运算和求模运算,运算符有:
加法: +
减法: -
乘法: *
除法: /
求模 (求余): %
比如:
${100 - x * x}
${x / 2}
${12 % 10}
输出
75
2.5
2
结果转换为整数
<#assign x=5/>
${(x/2)?int}<br>
${1.1?int}<br>
${1.999?int}<br>
${-1.1?int}<br>
${-1.999?int}<br>
输出:
1
1
-1
-1
比较运算符 | 替代 |
---|---|
== | == |
!= | != |
>= | gte |
> | gt |
< | lt |
<= | lte |
常用的逻辑操作符:
逻辑 或: ||
逻辑 与: &&
逻辑 非: !
逻辑操作符仅仅在布尔值之间有效,若用在其他类型将会产生错误导致模板执行中止
内建函数就像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 | 日期和时间都在 |
${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>
处理不存在的值
${vvv!"222"}<br><#--如果vvv为空就显示222否则显示vvv对应的值-->
不存在值检测操作符,这个操作符告诉我们一个值是否存在。基于这种情况, 结果是 true 或 false, ??判断变量是否为空
<#if mouse??>
Mouse found
<#else>
No mouse found
#if>
Creating mouse...
<#assign mouse = "Jerry">
<#if mouse??>
Mouse found
<#else>
No mouse found
#if>
和java中的用法一样
<#--定义变量age且赋值-->
<#assign age=22>
<#if age == 18>
18 ....
<#elseif age gt 18>
192021...
<#else>
1516...
#if>
和java中的switch语句一样
<#assign i=2>
<#switch i>
<#case 1>
ok
<#break>
<#case 2>
no
<#break>
<#default>
...
#switch>
跳出循环的用法
<#list list+list2 as x>
<#if x=='CS'>
<#break> <#--终止循环-->
<#else>
${x}<br>
#if>
#list>