freemark null处理
以下引用官方描述:
引用The FreeMarker template language doesn't know the Java language null at all. It doesn't have null keyword, and it can't test if something is null or not.
1.判断是否存在,通过exists关键字或者"??"运算符。都将返回一个布尔值
user.name?exists
user.name??
<#if user.name?exists>
//TO DO
</#if>
<#if user.age??>
//TO DO
</#if>
2.忽略null值
假设前提:user.name为null
${user.name},异常
${user.name!},显示空白
${user.name!'vakin'},若user.name不为空则显示本身的值,否则显示vakin
${user.name?default('vakin')},同上
${user.name???string(user.name,'vakin')},同上
转自:http://vakinge.javaeye.com/blog/734949
这里所指的丢失包含这两种情况。
不论在哪里引用变量,都可以指定一个默认值来避免变量丢失这种情况,通过在变量名 后面跟着一个!和默认值。就像下面的例子,当user 从数据模型中丢失时,模板将会将 user 的值表示为字符串”Anonymous”。(若user 并没有丢失,那么模板就会表现
出”Anonymous”不存在一样):
<h1>Welcome ${user!"Anonymous"}!</h1>
当然也可以在变量名后面通过放置??来询问FreeMarker 一个变量是否存在。将它和if 指令合并,那么如果user变量不存在的话将会忽略整个问候代码段:
<#if user??><h1>Welcome ${user}!</h1></#if>
关于多级访问的变量,比如 animals.python.price,书写代码:
animals.python.price!0,仅当animals.python存在而仅仅最后一个子变
量price 可能不存在 (这种情况下我们假设价格是0)。如果animals 或者python
不存在,那么模板处理过程将会以“未定义的变量”错误而停止。为了防止这种情况的发生,
可以这样来书写代码 (animals.python.price)!0 。这种情况下当animals 或
python 不存在时表达式的结果仍然是 0 。对于??也是同样用来的处理这种逻辑的:
animals.python.price??对比(animals.python.price)??来看。
freemark null处理的更多相关文章
- 《深入理解JAVA虚拟机》笔记1
java程序运行时的内存空间,按照虚拟机规范有下面几项: )程序计数器 指示下条命令执行地址.当然是线程私有,不然线程怎么能并行的起来. 不重要,占内存很小,忽略不计. )方法区 这个名字很让我迷惑. ...
- Freemark基本语法知识(转)
FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:<#-- ... -->格式部分,不会输 ...
- springboot+mybatis+freemark+oauth开发环境搭建
一.创建springboot工程 1.环境介绍: a:jdk版本:1.7 b:Springboot版本:1.5.6(使用1.5.9的版本整合mybatis会报错:java.lang.NoClassDe ...
- freemark、jsp&css
**************************************************************freemark相关**************************** ...
- freemark 页面静态化
1. 页面静态化是什么? 页面静态化有非常多含义,在WEB开发中.静态网页一般理解为站点中大部分超级链接所引用的页面是单独的HTML静态页面文件(如.htm..html等页面文件,html语言本身是静 ...
- JAVA中使用freemark生成自定义文件(json、excel、yaml、txt)
原文:http://blog.csdn.net/jinzhencs/article/details/51461776 场景:在我们工作中,有时需要生成一些文件,可能它不是一种标准的格式,比如JSON. ...
- freeMark
1. 什么是freemark Freemaker是一个”模板引擎”,也可以说是一个基于模板技术的生成文本输出的一个通用工具 2.一般的用途: l 能用来生成任意格式的文本:HTML,XML ...
- springboot mail整合freemark实现动态生成模板
目标:1:springboot 整合 mail2: mail 使用freemark 实现模板动态生成(就是通过字符串生成模板,不需要在工程中写入固定模板)3: springboot 整合aop 实现日 ...
- freemark+dom4j实现自动化word导出
导出word我们常用的是通过POI实现导出.POI最擅长的是EXCEL的操作.word操作起来样式控制还是太繁琐了.今天我们介绍下通过FREEMARK来实现word模板导出. 目录 开发准备 模板准备 ...
随机推荐
- Reorder the Books -- hdu -- 5500
http://acm.hdu.edu.cn/showproblem.php?pid=5500 Reorder the Books Time Limit: 4000/2000 MS (Java/Othe ...
- hdu1176--免费馅饼(简单动态规划)
都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内.馅饼如果掉在了地上当然就 ...
- POJ2229--Sumsets(动态规划)
Farmer John commanded his cows to search for different sets of numbers that sum to a given number. T ...
- Visualise the Argyris basis functions
""" Author: kinnala Visualise the Argyris basis functions. """ from sk ...
- WinAPI: sndPlaySound - 播放 wav 文件
WinAPI: sndPlaySound - 播放 wav 文件 //声明: sndPlaySound( lpszSoundName: PChar; {声音文件} uFlags: UINT{播 ...
- python实现Telnet远程登陆到设备并执行命令
#encoding=utf-8 import telnetlib import time def do_telnet(Host, username, password, finish, command ...
- 自定义Chrome缩放比例
我想要设置Chrome页面缩放为120%,但是Chrome只提供110% 125%,根本没有让我舒心的缩放比例. 强迫症发作,谷歌了半天没有一个很好的解决方案. 虽然也有不少第三方扩展可以自定义缩放比 ...
- C# DataGridView中单元格Cell改变事件
DataGridView控件中的各种事件都无法直接响应Cell中内容的变化,包括KeyPress等事件,可以采用下面方法 private void dataGridViewBarcode_Editin ...
- 一、winForm-DataGridView操作——控件绑定事件的两种方法
在winForm窗体中绑定(注册)事件的方法有两种: 一.绑定事件 双击控件,即进入.cs的代码编辑页面,会出现 类似于“ private void 控件名称_Click(object sender, ...
- 关于c#的知识博客
C#.NET Request相关操作:获取IP.端口其他一些: http://www.cnblogs.com/moss_tan_jun/archive/2011/02/10/1950575.html