常用的freemark语法(三)
一,符号的意义
1.0,单问号
?后面要加关键字,例如:<#if object?exists>object对象不为空</#if>
<#if str??>${str?string}</#if><#--将str以字符串形式显示-->
${nowDate?time}<#--将现有时间以时间的格式显示,显示结果如:15:13:05-->
${nowDate?date}<#--以日期格式显示,如:2011-4-28-->(date的格式可以在freemarker.properties文件中配置)
单问号后面跟的是函数
其实?exists就相当于??
1.1,双问号
<#if orderParam.quliJycs?? && orderParam.quliJycs == '1'>已上传<#else>请上传</#if>
其中双问号意思就相当于 orderParam.quliJycs?exists 是否存在 ,判断为非空的,这句话的意思就是说如果orderParam.quliJycs存在并且值为1则是已上传。
1.1.1,三个问号
${(num.color)???string}
前连个问号是判断是否存在,后面一个问号是让它以String的类型输出
1.2,单个感叹号
${(user.name)!""}
${(user.name)!}
3,${user.name?default(‘xxx’)}//默认值xxx
4 ${(user.name)!"默认值"}
第一行是说如果为空就让值为空
第二行就是如果为空不会报错
第三行则是如果为空则值为默认值
第三行和第四行的作用是一样的。
但是前提条件都是user对象不能为空,这句话主要针对的是它的值
1.3,双感叹号
${abc!!},<#list strList!! as str >
比如${list strList as str},如果strList不存在,则freemarker是会报错的
而如果加上<#list strList!! as str >,则freemarker就会对忽略掉空变量而不会报错
1.4,判断非空
1、if和”??“
<#if age??>
无年龄值
<#/if>
2、$和!
${age!'0'}
如果age为null,默认给'0'
二,循环语句的应用
2.1,if else 语句
<#if student.studentAge lt 12>
${student.studentName}不是一个初中生
<#elseif student.studentAge lt 15>
${student.studentName}不是一个高中生
<#elseif student.studentAge lt 18>
${student.studentName}不是一个大学生
<#else>
${student.studentName}是一个大学生
</#if>
<#if condition>... <#elseif condition2>... <#elseif condition3>...... <#else>... </#if>
2.2,switch的应用
字符串
<#switch being.size>
<#case "small">
This will be processed if it is small
<#break>
<#case "medium">
This will be processed if it is medium
<#break>
<#case "large">
This will be processed if it is large
<#break>
<#default>
This will be processed if it is neither
</#switch>
数字
<#switch x>
<#case x = 1>
1
<#case x = 2>
2
<#default>
d
</#switch>
格式
<#switch value>
<#case refValue1>
...
<#break>
<#case refValue2>
...
<#break>
...
<#case refValueN>
...
<#break>
<#default>
...
</#switch>
三,集合
2.1,集合的长度
<#if student?size != 0></#if> 判断=的时候,注意只要一个=符号,而不是==
2.2,遍历list集合
User类
public class User{
private String username;
private
(省略set和get方法)
}
user.ftl
<#--Freemarker遍历list-->
简单遍历list:
<#list userList as user>
用户名:${user.userName}
密 码:${user.userPassword}
年 龄: ${user.age}
</#list>
<#--Freemarker遍历list并应用list隐含变量item_index-->
item_index使用:
<#list userList as user>
第${user_index+1}个用户
用户名:${user.userName}
密 码:${user.userPassword}
年 龄: ${user.age}
</#list>
<#--Freemarker遍历list并应用list隐含变量item_has_next-->
item_has_next,size使用:
<#list userList as user>
用户名:${user.userName}
密 码:${user.userPassword}
年 龄: ${user.age}
<#if !user_has_next>
共有${userList?size}最后一个用户是:${user.userName}
</#if>
</#list>
<#--Freemarker遍历list并按用户年龄升序排序-->
按用户年龄升序排序:
<#list userList?sort_by("age") as user>
用户名:${user.userName}
密 码:${user.userPassword}
年 龄: ${user.age}
</#list>
<#--Freemarker遍历list并按用户年龄降序排序-->
按用户年龄降序排序:
<#list userList?sort_by("age")?reverse as user>
用户名:${user.userName}
密 码:${user.userPassword}
年 龄: ${user.age}
</#list>
<#--Freemarker遍历list当用户年龄大于21岁时,停止输出-->
list中应用break:
<#list userList?sort_by("age")?reverse as user>
用户名:${user.userName}
密 码:${user.userPassword}
年 龄: ${user.age}
<#if (user.age>21) >
<#break>
</#if>
</#list>
2.3,遍历map集合一
假设selectDateModel 是我们后台返回的map<String, String>;
<#list selectDateModel?keys as key>
<option value="${key}">${selectDateModel[key]}</option>
</#list>
2.4,遍历map集合二
<#--freemarker map的应用-->
<#--创建一个map,注意在freemarker中,map的key只能是字符串来作为key-->
<#assign userMap={"1","刘德华","2":"张学友"}/>
<#--获取map中的值-->
${userMap["1"]}
<#--获取map的keys-->
<#assign keys=userMap?keys/>
<#--遍历map 首选获取key的集合-->
<#list keys as key>
key:${key}-value:${userMap["${key}"]}
</#list>
</br>
<#--直接遍历map的第二种方式-->
<#list userMap?keys as key>
key:${key}--value:${userMap["${key}"]}
</#list>
</br>
<#--直接遍历map的values-->
<#list userMap?values as value>
${value}
</#list>
3,其它
3.1,判断null,""
<#if object.param??&&object.param!="">${object.param!}<#else>请选择</#if>
常用的freemark语法(三)的更多相关文章
- PHP语法(三):控制结构(For循环/If/Switch/While)
相关链接: PHP语法(一):基础和变量 PHP语法(二):数据类型.运算符和函数 PHP语法(三):控制结构(For循环/If/Switch/While) 本文我来总结几个PHP常用的控制结构,先来 ...
- Python 基础语法(三)
Python 基础语法(三) --------------------------------------------接 Python 基础语法(二)------------------------- ...
- Freemaker FTL指令常用标签及语法
https://blog.csdn.net/pengpengpeng85/article/details/52070602 FTL指令常用标签及语法 注意:使用freemaker,要求所有标签必须闭合 ...
- 【知识库】-数据库_MySQL常用SQL语句语法大全示例
简书作者:seay 文章出处: 关系数据库常用SQL语句语法大全 Learn [已经过测试校验] 一.创建数据库 二.创建表 三.删除表 四.清空表 五.修改表 六.SQL查询语句 七.SQL插入语句 ...
- FTL指令常用标签及语法
FTL指令常用标签及语法注意:使用freemaker,要求所有标签必须闭合,否则会导致freemaker无法解析. freemaker注释:<#-- 注释内容 -->格式部分,不会输出 - ...
- JAVA中常用需要设置的三个环境变量(JAVA_HOME、CLASSPATH、PATH)
JAVA中常用需要设置的三个环境变量: JAVA_HOME.CLASSPATH.PATH (一) 配置环境变量:(相对路径) 1. JAVA_HOME=x:/jdk1.6.0 2. 用%JAVA_HO ...
- linux下常用语言的语法检查插件整理
linux下常用语言的语法检查插件 可以结合vim语法检查插件syntastic使用,具体请参考syntastic使用说明 如php,sql,json,css,js,html,shell,c等语法插件 ...
- {Django基础十之Form和ModelForm组件}一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 ModelForm
Django基础十之Form和ModelForm组件 本节目录 一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 Model ...
- Unit05: JavaScript对象概述 、 常用内置对象一 、 常用内置对象二 、 常用内置对象三
Unit05: JavaScript对象概述 . 常用内置对象一 . 常用内置对象二 . 常用内置对象三 常用内置对象使用演示: <!DOCTYPE html> <html> ...
随机推荐
- BZOJ 2005: [Noi2010]能量采集 [莫比乌斯反演]
题意:\((0,0)\)到\((x,y),\ x \le n, y \le m\)连线上的整点数\(*2-1\)的和 \((0,0)\)到\((a,b)\)的整点数就是\(gcd(a,b)\) 因为. ...
- getHibernateTemplate() VS getSession()
如题所示,对于这个问题,官网文档已给出答案,详见: /** * Obtain a Hibernate Session, either from the current transaction or * ...
- Ubuntu的Java环境变量
新架构要上线了,这两天开始准备分析一下了,今天是直接进到JAVA_HOME的lib目录执行的java -cp sa-jdi.jar sun.jvm.hotspot.HSDB,然后报了个错: 这是哪来的 ...
- 痞子衡随笔:常用的数据传输差错检测技术(1)- 奇偶校验(Parity Check)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式数据传输里的差错检测技术-奇偶校验. 在嵌入式应用里,除了最核心的数据处理外,我们还会经常和数据传输打交道.数据传输需要硬件传输接口 ...
- 本地创建yum源并安装lnmp
注意:安装系统时,文件类型要未xfs类型,root要分配最多的空间 1.挂载安装光盘mount -t iso9660 -o loop CentOS-7-x86_64-DVD-1511.iso /mnt ...
- zabbix安装笔记
部署监控安装zabbix时,安装环境选择位mysql5.6.29 php选5.4.45 环境安装:centOS7: yum install httpd php mariadb-server mysql ...
- Go语言获取命令行参数
package main import ( "os" "fmt" ) func main() { args := os.Args //获取用户输入的所有参数 { ...
- 读《Linux Shell脚本攻略》(第2版) 总结
前段时间读完了<Linux Shell脚本攻略>(第2版)这本书,给部分想读这本书的人分享下个人感受. 说下这本书的难度吧.纯新手或者只懂少部分编程知识的人,读起来还是有很大难度的.以我为 ...
- 韩信点兵(hanxin)
相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排.五人一排.七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了.输入包含多组数据,每组数据包含3个非负整数a,b,c,表 ...
- Yii2框架RBAC(Role-Based Access Control)的使用
1.在项目的common/config/main.php文件的components中添加如下代码: 'authManager' => [ 'class' => 'yii\rbac ...