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时,问题来了.全屏都是白底黑色,没有高亮显示,没有语法提示,不能格式化.看着眼花,还容易出 ...
随机推荐
- Android实现换肤功能(二)
前两天写的上章关于换肤的功能获得了很好的反响,今天为大家介绍另一种方式.今天实现的策略也是网友建议的,然后我自己去写了个demo,大家自己评估下相比第一种方式的优势和劣势在哪里. 简单介绍下关于第一种 ...
- 前端资源管理工具sourcetree
https://www.sourcetreeapp.com/
- 贪吃蛇easyx版本
这学期学了图形交互学,三个星期下来,突然意识到已经可以用c++写一个贪吃蛇了. 于是就用了两天写了这个小游戏. 其中一天写了核心代码,半天找核心代码中的bug,还有半天进行了界面及操作的优化. 但是有 ...
- WCF公开服务元数据方式
一般我们使用了scvutil命令自动生成了服务的客户端代理类: 例如:svcutil http://localhost:8000/?wsdl /o:FirstServiceClient.cs 命令中h ...
- ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程)
ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程) ufldl出了新教程,感觉比之前的好,从基础讲起,系统清晰,又有编程实践. 在dee ...
- 点滴积累【C#】---操作文件
操作文件 写入文件效果: 写入文件代码: private void 保存ToolStripMenuItem_Click(object sender, EventArgs e) { try { File ...
- Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理
Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理 1. reg 工具 这个cli工具接口有,优先使用,jreg的要调用dll了,麻烦的 ...
- Makefile 之 $(Q)
# To put more focus on warnings, be less verbose as default # Use 'make V=1' to see the full command ...
- font-sqirrel
html5之前,只要稍微特殊点的字体,都必须做成图片,以免客户端无法显示.而对于正文或者需要后台调用大量文字的地方,则无能为力.但是,html5推出了 @font-face 支持自定义字体之后,这个问 ...
- 浅谈P2P终结者原理及其突破
P2P终结者按正常来说是个很好的网管软件,但是好多人却拿它来,恶意的限制他人的流量,使他人不能正常上网,下面我们就他的功能以及原理还有突破方法做个详细的介绍! 我们先来看看来自在网上PSP的资料:P2 ...