常用的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> ...
随机推荐
- HEOI2016 题解
HEOI2016 题解 Q:为什么要在sdoi前做去年的heoi题 A:我省选药丸 http://cogs.pro/cogs/problem/index.php?key=heoi2016 D1T1 树 ...
- CF 235C. Cyclical Quest [后缀自动机]
题意:给一个主串和多个询问串,求询问串的所有样子不同的周期同构出现次数和 没有周期同构很简单就是询问串出现次数,|Right| 有了周期同构,就是所有循环,把询问串复制一遍贴到后面啊!思想和POJ15 ...
- python dns查询与DNS传输漏洞查询
前言: 昨天晚上在看DNS协议,然后想到了 DNS传输漏洞.便想写一个DNS查询与DNS传输漏洞查询 DNS传输漏洞介绍: DNS传输漏洞:若DNS服务器配置不当,可能导致匿名用户获取某个域的所有记录 ...
- SparkSteaming运行流程分析以及CheckPoint操作
本文主要通过源码来了解SparkStreaming程序从任务生成到任务完成整个执行流程以及中间伴随的checkpoint操作 注:下面源码只贴出跟分析内容有关的代码,其他省略 1 分析流程 应用程序入 ...
- 反反爬虫 IP代理
0x01 前言 一般而言,抓取稍微正规一点的网站,都会有反爬虫的制约.反爬虫主要有以下几种方式: 通过UA判断.这是最低级的判断,一般反爬虫不会用这个做唯一判断,因为反反爬虫非常容易,直接随机UA即可 ...
- 安装gitlab8.0在reconfigure报错
现象: https://gitlab.com/gitlab-org/omnibus-gitlab/issues/303 参考方法: https://forum.gitlab.com/t/gitlab- ...
- 使用VIM将文件的其中的连续几行注释删除或者给其中的连续几行添加注释
一.使用VIM将文件的其中的连续几行注释删除 1.用VIM打开一个文件,比如打开sshd_config文件,以该文件的下面几行为例: #vim sshd_config 2.此时,按ctrl+v键,使 ...
- 应用负载均衡之LVS(三):使用ipvsadm以及详细分析VS/DR模式
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- MySQL数据库基础(二)(约束以及修改数据表)
一,约束以及修改数据表 约束的作用?1.约束保证数据的完整性.一致性:2.约束分为表级约束.列级约束:3.约束类型包括:NOT NULL(非空约束).PRIMARY KEY(主键约束).UNIQUE ...
- Java集合中的AbstractMap抽象类
jdk1.8.0_144 AbstractMap抽象类实现了一些简单且通用的方法,本身并不难.但在这个方法中有两个方法非常值得关注,keySet和values方法源码的实现可以说是教科书式的典范. 抽 ...