freemarker 处理null值
来源:互联网 发布:文华财经官网mac版 编辑:程序博客网 时间:2024/05/19 12:26
在开发过程中,有可能变量的值是为null的,freemarker不像EL表达式,EL表达式当某个变量不存在的时候不会出现报错,而freemarker是不能容忍null值的,除非预先判断,或者指定为null的时候的默认值.
处理方法一.
在变量后指定默认值,当变量为null的时候就直接赋值默认值.
语法:${变量名!默认值}
项目结构:
null.ftl
<#--处理方法一 指定默认值 当变量user不存在的时候user的值就直接赋值字符串"admin" 如果在模版中存在user变量的值,则按照模版中的数据输出,为了 演示,user是在数据模型中存在的,而user1是在数据模型中不存 在的 --> ${user!"admin"} ${user1!"zhangsan"} <#--注意如果u1变量是在hash表中不存在的 那么此处会报错,这个需要特别注意--> ${u1.username!"zhaoliu"}
User.java
package org.freemarker.test;/** * 用户实体类 * @author YHC * */public class User {private String username;//用户名称public User() {}public User(String username) {this.username = username;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}}
Test.java
package org.freemarker.test;import java.io.File;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.Writer;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import freemarker.template.Configuration;import freemarker.template.DefaultObjectWrapper;import freemarker.template.Template;import freemarker.template.TemplateException;public class Test {public static void main(String[] args) throws IOException,TemplateException {Configuration cfg = new Configuration();// 指定模板文件从何处加载的数据源,这里设置成一个文件目录。cfg.setDirectoryForTemplateLoading(new File("./template"));// 指定模板如何检索数据模型,这是一个高级的主题了…// 但先可以这么来用:cfg.setObjectWrapper(new DefaultObjectWrapper());// 创建根哈希表Map<String,Object> root = new HashMap<String,Object>(); //此变量是在模型中存在的root.put("user", "lisi");//放置对象到hash表中,注意此对象的username属性是为null的root.put("u1", new User());// 从配置Configuration对象中获取模版Template temp = cfg.getTemplate("null.ftl");Writer out = new OutputStreamWriter(System.out);temp.process(root, out);out.flush();out.close();}}
最终输出结果:
lisi zhangsan zhaoliu
处理方法二.
使用if标签判断变量是否存在.
语法:<#if 变量名??></#if>
在变量名后面通过放置??来判断变量是否存在,如果指定变量不存在的话,那么会忽略if开闭标签中的内容.
项目结构和上图一致.
Test.java
package org.freemarker.test;import java.io.File;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.Writer;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import freemarker.template.Configuration;import freemarker.template.DefaultObjectWrapper;import freemarker.template.Template;import freemarker.template.TemplateException;public class Test {public static void main(String[] args) throws IOException,TemplateException {Configuration cfg = new Configuration();// 指定模板文件从何处加载的数据源,这里设置成一个文件目录。cfg.setDirectoryForTemplateLoading(new File("./template"));// 指定模板如何检索数据模型,这是一个高级的主题了…// 但先可以这么来用:cfg.setObjectWrapper(new DefaultObjectWrapper());// 创建根哈希表Map<String,Object> root = new HashMap<String,Object>(); //此变量是在模型中存在的root.put("user", "lisi");//放置对象到hash表中,注意此对象的username属性是为null的root.put("u1", new User());//注意此对象的username是有值的root.put("u2",new User("qianqi"));// 从配置Configuration对象中获取模版Template temp = cfg.getTemplate("null.ftl");Writer out = new OutputStreamWriter(System.out);temp.process(root, out);out.flush();out.close();}}
null.ftl
<#--处理方法二 判断指定变量是否存在. 如果user变量不存在会忽略if开闭标签中的内容 --> <#if user??> user对象存在,值为:${user} </#if> <#if user1??> user1对象不存在 <#else> user1对象不存在 </#if> <#-- 判断多级变量. u1对象的username属性为null的. u2对象的username属性是有值的. --> <#if u1.username??> u1对象username属性存在值为${u1.username}. <#else> u1对象username属性不存在. </#if> <#if u2.username??> u2对象username属性存在值为${u2.username}. <#else> u2对象username属性不存在. </#if>
User.java
package org.freemarker.test;/** * 用户实体类 * @author YHC * */public class User {private String username;//用户名称public User() {}public User(String username) {this.username = username;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}}
最终输出结果:
user对象存在,值为:lisi user1对象不存在 u1对象username属性不存在. u2对象username属性存在值为qianqi.
- freemarker 处理null值
- FreeMarker 对null值的处理技巧
- FreeMarker 对null值的处理
- FreeMarker对null值的处理
- FreeMarker中的null处理
- freemarker 对null 的处理
- freemarker中空值 null的处理 ?exists ?if_exists ?default(“”)
- freemarker中空值 null的处理 ?exists ?default("")
- freemarker中空值 null的处理 ?exists ?if_exists ?default(“”)
- freemarker对于 null 值判断
- Freemarker 空值处理
- freemarker处理空值
- freemarker空值处理
- freemarker中的null异常处理以及!与??的使用
- freemarker中的null异常处理以及!与??的使用
- freemarker中空值“”,null值的判断
- FreeMarker空值的处理
- oracle null值处理
- 数据库日志删除重建方法
- MongoDB Master:MongoDB“诟病”分析
- 组合问题(从M个不同字符中任取N个字符的所有组合)
- 朴素贝叶斯算法----垃圾邮件识别
- 《算法竞赛入门经典》第三章习题3-1
- freemarker 处理null值
- JavaScript入门之基本函数篇
- Liferay6.1:hook中追加portlet的配置项目的实现方法
- c中使用malloc动态申请二维数组
- 修改Tabhost样式和字体大小和居中显示
- 最大数 -蓝桥杯 递归的执行顺序
- POJ 3155 Hard Life 最大密度子图
- 将 confirm的确定取消修改为是否
- Box2D创建圆角刚体