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时,问题来了.全屏都是白底黑色,没有高亮显示,没有语法提示,不能格式化.看着眼花,还容易出 ...
随机推荐
- 修改配置nginx,限制无良爬虫频率
配置如下: #全局配置 limit_req_zone $anti_spider zone=anti_spider:10m rate=15r/m; #某个server中 limit_req zone=a ...
- checkbox 全选操作
<html> <head></head> <body> <div id="places"> <input type ...
- mysql创建账号对应的数据库方法
增加一个用户mydb密码为123450, 让他只可以在(localhost/%)%表示可以支持远程上登录,并可以对数据库mydata5_db进行查询.插入.修改.删除的操作. grant select ...
- 点滴积累【C#】---Highcharts图形统计
效果: 思路: 后台获取数据!然后拼接为前台所要求的格式,再将拼接好的StringBuilder给了hidden控件! 然后前台获取JQuery获取Hidden的值,最后将值赋给图形! 代码: [前台 ...
- 单元测试时使用Ninject的小问题
主要是Kernel没有被释放,Ninject的Kernel必须调用IDispose释放.也有可能是静态类型在VS单元测试时无法被释放. 先记录下这个问题
- .Net MVC ViewBag
ViewBag用来做视图的值绑定,我不清楚是不是这么称呼.之前看过安卓的值绑定做法,mvc直接动态类型,瞬间逼格满满 Controller: public class HomeController : ...
- Jetty - Handler源码分析
1. 描述 基于Jetty-9.4.8.v20171121. Handler是Jetty服务处理器,用户Server处理HTTP请求. Handler可以做如下处理: (1)完全生成HTTP响应: ( ...
- Vivado Logic Analyzer的使用(二)
本文基于Vivado 2014.2,阅读前请参考前文http://blog.chinaaet.com/detail/37264 之前的设计都是出发后直接捕获数据.其实,与chipscope类似,可以设 ...
- 基于部标Jt/T809协议和Java Netty框架构建Gps位置监控平台
现在地方上由于运输车辆的GPS数据都分散在地方上已有的各种企业平台上面,不利于大数据的分析和智能应用,而开发智能的基于大数据的Gps监控平台,往往需要和各种第三方的部标GPS监控平台对接,获取到第三方 ...
- hadoop 调试mapperduce
问题描述 运行hadoop的MapReduce示例,在running job卡住 在页面中显示一直处于 ACCEPTED Applications 状态 修改日志级别export HADOOP_ROO ...