1. ${sss!} <#--没有定义这个变量,默认值是空字符串! -->

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

转自:https://blog.csdn.net/chang_li/article/details/51913105

在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。

一、FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format}

  1. <pre name="code" class="html">${book.name?if_exists } //用于判断如果存在,就输出这个值
  2. ${book.name!"xxx"}//默认值xxx
  3. ${book.date?string('yyyy-MM-dd')} //日期格式
  4. ${book?string.number} 20 //三种不同的数字格式
  5. ${book?string.currency} <#-- $20.00 -->
  6. ${book?string.percent} <#-- 20% -->
  7. ${.now?datetime}//当前时间戳


二、FreeMarker提供两个运算符来避免空值:1. !: 指定缺失变量的默认值;2. ??:判断变量是否存在。!运算符有两种用法:variable!或variable!defaultValue。第一种用法不给变量指定默认值,表明默认值是空字符串、长度为0的集合、或长度为0的Map对象。例子:

  1. <pre name="code" class="html"><#-- ${sss} 没有定义这个变量,会报异常! -->
  2. ${sss!} <#--没有定义这个变量,默认值是空字符串! -->
  3. ${sss!"abc"} <#--没有定义这个变量,默认值是字符串abc! -->

三、??运算符返回布尔值,如:variable??,如果变量存在,返回true,否则返回false。

将它和 if 指令合并,那么如果 user 变量不存在的话将会忽略整个问候代码段:

  1. <#if user??><h1>Welcome ${user}!</h1></#if>

四、Freemarker中对于javabean的处理跟EL表达式一致,类型可自动转化!非常方便!
有一点需要注意: ${..}只能用于文本部分作为字符串输出,不能用于判断真假值
也就是不能这么写:<#if ${isBig}>Wow!</#if> ,应为<#if isBig>Wow!</#if>

五、对list进行遍历以及if else判断

  1. 1)<table  width="100%">
  2. <#list investList as item>
  3. <tr>
  4. <td align="left" style="width:50%!important;">
  5. ${item.userName}<br>${item.addTime?string("yyyy-MM-ddHH:mm:ss")}
  6. </td>
  7. <td align="right" style="width:50% !important;">${item.money?string('0.00')}元<br/>
  8. <#if item.tenderType == 0>网站投标
  9. <#elseif item.tenderType == 1>自动投标
  10. <#elseif item.tenderType == 2>手机投标
  11. </#if>
  12. </td>
  13. </tr>
  14. </#list>
  15. </table>

2))

  1. <select name="awardTypeId" class="type">
  2. <option value="0" selected="selected">全部</option>
  3. <#if typeList??>
  4. <#list typeList as type>
  5. <option value="${type.id!}" >${type.name!}</option>
  6. </#list>
  7. </select>

3)assign指令用于为该模板页面创建或替换一个顶层变量,

  1. <#assign x="Hello ${user}!">

4)

    1. <#if data.list?size > 0>

freemarker的${!}的更多相关文章

  1. spring源码分析之freemarker整合

    FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而是一个Java类库,是一款程 ...

  2. Maven 整合FreeMarker使用

    pom.xml <!-- freemarker jar --> <dependency> <groupId>org.freemarker</groupId&g ...

  3. JAVA FreeMarker工具类

    FreeMarkerUtil.java package pers.kangxu.datautils.utils; import java.io.File; import java.io.StringW ...

  4. FreeMarker:怎么使用

    第一个FreeMarker程序 1. 建立一个普通的java项目:testFreeMarker 2. 引入freemarker.jar包 3. 在项目目录下建立模板目录:templates 4. 在t ...

  5. FreeMarker的基础语法

    FreeMarker语言 FreeMarker语言概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写. FreeMarker被设计用来生成HTML Web ...

  6. freemarker页面中文乱码

    一.前言 简单的记录freemarker遇到的错误问题:ftl页面中文乱码 由于freemarker整合在ssm框架中,所以笔者直接贴配置代码 <beans xmlns="http:/ ...

  7. Spring 4 使用Freemarker模板发送邮件&添加附件

    前言 Spring对Java的邮件发送提供了很好的支持,提供了超级简单的API,大大简化了Java邮件发送功能的开发. Spring对Email的支持是基于JavaMail API开发的,所以,我们在 ...

  8. Freemarker 程序开发

    Freemarker 程序开发 现在web开发中,多使用freemarker 来描述页面.通常会使用的macro来定义各种组件,从而达到UI组件的复用.结合使用其它的指定,可快速的描述一个html页面 ...

  9. 第一个spring、springmvc、mybatis、freemarker项目小知识(一)

    1.持久层开发(Mybatis)    1.1 添加,非空字段必须给值,不是非空加判断,有值添加无值不添    1.2 删除,注意外键关系的级联删除.(事务传播行为)    1.3 更新,每个字段单独 ...

  10. myeclipse环境下开发freemarker

    最近在着手一个项目,其中就要使用到freemarker模版,当把html漂亮写完时,改写成freemarker时,问题来了.全屏都是白底黑色,没有高亮显示,没有语法提示,不能格式化.看着眼花,还容易出 ...

随机推荐

  1. HTML5学习笔记1 HTML5 新元素

    自1999年以后html4.0已经改变了很我,今天,在html4.01中的几个已经被废弃,这些元素在html5中已经被删除或重新定义. 为了更好地处理今天的互联网应用,html5添加了很多新元素及功能 ...

  2. kettle--组件(1)--值映射

    组件:值映射 如下如所示: 首先,给出官方给出的文档: 个人理解: Target field name:可以理解为将source column的字段复制为另一个target column的名字. De ...

  3. Android与JS进行交互传文件路径

    webview+h5这种混合开发最近很火,其中最重要的大概就是java代码和js的交互了,刚接触这东西两天,写写收获. 新建一个assets文件夹,要与res这个文件夹同级,其中存放web项目. 先看 ...

  4. 点滴积累【other】---.net程序员面试题总结

    自己总结的.net的面试题. 说明:以下代码均已经过验证正确无误! C#: 1.c#实现N的阶乘: class Program { static void Main(string[] args) { ...

  5. Atitit .h5文件上传

    Atitit .h5文件上传 1. 上传原理1 2. Html1 3. Js2 4. uploadV2.js2 5. upServlet & FileUploadService {3 6. 注 ...

  6. __attribute__机制介绍(转)

    转自 http://blog.csdn.net/ithomer/article/details/6566739 1. __attribute__ GNU C的一大特色(却不被初学者所知)就是__att ...

  7. poj Sudoku(数独) DFS

    Sudoku Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 13665   Accepted: 6767   Special ...

  8. 纯真IP数据库解析Delphi D10.1下正常使用

    直接一个单元,代码分享出来. unit   Net.IPLocation; interface uses System.Classes, System.SysUtils, Winapi.WinSock ...

  9. hibernate 在web.xml中配置的作用

    1. <filter>     <filter-name>Spring character encoding filter</filter-name>     &l ...

  10. python学习笔记3----正则表达式

    正则表达式(RE)是通过re模块来实现的. 字符匹配: --普通字符: *大多数字母和字符一般都会和自身匹配. --元字符:. ^ $ * + ? {}  [] \ | () []: 通常用来指定一个 ...