freemarker的${!}
- ${sss!} <#--没有定义这个变量,默认值是空字符串! -->
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
转自:https://blog.csdn.net/chang_li/article/details/51913105
在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。
一、FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format}
- <pre name="code" class="html">${book.name?if_exists } //用于判断如果存在,就输出这个值
- ${book.name!"xxx"}//默认值xxx
- ${book.date?string('yyyy-MM-dd')} //日期格式
- ${book?string.number} 20 //三种不同的数字格式
- ${book?string.currency} <#-- $20.00 -->
- ${book?string.percent} <#-- 20% -->
- ${.now?datetime}//当前时间戳
二、FreeMarker提供两个运算符来避免空值:1. !: 指定缺失变量的默认值;2. ??:判断变量是否存在。!运算符有两种用法:variable!或variable!defaultValue。第一种用法不给变量指定默认值,表明默认值是空字符串、长度为0的集合、或长度为0的Map对象。例子:
- <pre name="code" class="html"><#-- ${sss} 没有定义这个变量,会报异常! -->
- ${sss!} <#--没有定义这个变量,默认值是空字符串! -->
- ${sss!"abc"} <#--没有定义这个变量,默认值是字符串abc! -->
三、??运算符返回布尔值,如:variable??,如果变量存在,返回true,否则返回false。
将它和 if 指令合并,那么如果 user 变量不存在的话将会忽略整个问候代码段:
- <#if user??><h1>Welcome ${user}!</h1></#if>
四、Freemarker中对于javabean的处理跟EL表达式一致,类型可自动转化!非常方便!
有一点需要注意: ${..}只能用于文本部分作为字符串输出,不能用于判断真假值
也就是不能这么写:<#if ${isBig}>Wow!</#if> ,应为<#if isBig>Wow!</#if>
五、对list进行遍历以及if else判断
- 1)<table width="100%">
- <#list investList as item>
- <tr>
- <td align="left" style="width:50%!important;">
- ${item.userName}<br>${item.addTime?string("yyyy-MM-ddHH:mm:ss")}
- </td>
- <td align="right" style="width:50% !important;">${item.money?string('0.00')}元<br/>
- <#if item.tenderType == 0>网站投标
- <#elseif item.tenderType == 1>自动投标
- <#elseif item.tenderType == 2>手机投标
- </#if>
- </td>
- </tr>
- </#list>
- </table>
2))
- <select name="awardTypeId" class="type">
- <option value="0" selected="selected">全部</option>
- <#if typeList??>
- <#list typeList as type>
- <option value="${type.id!}" >${type.name!}</option>
- </#list>
- </select>
3)assign指令用于为该模板页面创建或替换一个顶层变量,
- <#assign x="Hello ${user}!">
4)
- <#if data.list?size > 0>
freemarker的${!}的更多相关文章
- spring源码分析之freemarker整合
FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而是一个Java类库,是一款程 ...
- Maven 整合FreeMarker使用
pom.xml <!-- freemarker jar --> <dependency> <groupId>org.freemarker</groupId&g ...
- JAVA FreeMarker工具类
FreeMarkerUtil.java package pers.kangxu.datautils.utils; import java.io.File; import java.io.StringW ...
- FreeMarker:怎么使用
第一个FreeMarker程序 1. 建立一个普通的java项目:testFreeMarker 2. 引入freemarker.jar包 3. 在项目目录下建立模板目录:templates 4. 在t ...
- FreeMarker的基础语法
FreeMarker语言 FreeMarker语言概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写. FreeMarker被设计用来生成HTML Web ...
- freemarker页面中文乱码
一.前言 简单的记录freemarker遇到的错误问题:ftl页面中文乱码 由于freemarker整合在ssm框架中,所以笔者直接贴配置代码 <beans xmlns="http:/ ...
- Spring 4 使用Freemarker模板发送邮件&添加附件
前言 Spring对Java的邮件发送提供了很好的支持,提供了超级简单的API,大大简化了Java邮件发送功能的开发. Spring对Email的支持是基于JavaMail API开发的,所以,我们在 ...
- Freemarker 程序开发
Freemarker 程序开发 现在web开发中,多使用freemarker 来描述页面.通常会使用的macro来定义各种组件,从而达到UI组件的复用.结合使用其它的指定,可快速的描述一个html页面 ...
- 第一个spring、springmvc、mybatis、freemarker项目小知识(一)
1.持久层开发(Mybatis) 1.1 添加,非空字段必须给值,不是非空加判断,有值添加无值不添 1.2 删除,注意外键关系的级联删除.(事务传播行为) 1.3 更新,每个字段单独 ...
- myeclipse环境下开发freemarker
最近在着手一个项目,其中就要使用到freemarker模版,当把html漂亮写完时,改写成freemarker时,问题来了.全屏都是白底黑色,没有高亮显示,没有语法提示,不能格式化.看着眼花,还容易出 ...
随机推荐
- HTML5学习笔记1 HTML5 新元素
自1999年以后html4.0已经改变了很我,今天,在html4.01中的几个已经被废弃,这些元素在html5中已经被删除或重新定义. 为了更好地处理今天的互联网应用,html5添加了很多新元素及功能 ...
- kettle--组件(1)--值映射
组件:值映射 如下如所示: 首先,给出官方给出的文档: 个人理解: Target field name:可以理解为将source column的字段复制为另一个target column的名字. De ...
- Android与JS进行交互传文件路径
webview+h5这种混合开发最近很火,其中最重要的大概就是java代码和js的交互了,刚接触这东西两天,写写收获. 新建一个assets文件夹,要与res这个文件夹同级,其中存放web项目. 先看 ...
- 点滴积累【other】---.net程序员面试题总结
自己总结的.net的面试题. 说明:以下代码均已经过验证正确无误! C#: 1.c#实现N的阶乘: class Program { static void Main(string[] args) { ...
- Atitit .h5文件上传
Atitit .h5文件上传 1. 上传原理1 2. Html1 3. Js2 4. uploadV2.js2 5. upServlet & FileUploadService {3 6. 注 ...
- __attribute__机制介绍(转)
转自 http://blog.csdn.net/ithomer/article/details/6566739 1. __attribute__ GNU C的一大特色(却不被初学者所知)就是__att ...
- poj Sudoku(数独) DFS
Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13665 Accepted: 6767 Special ...
- 纯真IP数据库解析Delphi D10.1下正常使用
直接一个单元,代码分享出来. unit Net.IPLocation; interface uses System.Classes, System.SysUtils, Winapi.WinSock ...
- hibernate 在web.xml中配置的作用
1. <filter> <filter-name>Spring character encoding filter</filter-name> &l ...
- python学习笔记3----正则表达式
正则表达式(RE)是通过re模块来实现的. 字符匹配: --普通字符: *大多数字母和字符一般都会和自身匹配. --元字符:. ^ $ * + ? {} [] \ | () []: 通常用来指定一个 ...