1.在使用freemarker 编程时,如果给变量赋值对象为null时,就会出现在异常
如:<#assign selfname = ProductHelper.getAddProductSelfAddressRel(book.id) />
当 ProductHelper.getAddProductSelfAddressRel(book.id) 返回值为null时,出现异常
ProductHelper.getAddProductSelfAddressRel(book.id) is undefined.
It cannot be assigned to selfname
如何处理呢:
修改方1:
<#assign selfname = ProductHelper.getAddProductSelfAddressRel(book.id)! />
这样selfname 就为空('')
修改方2,设置默认值:
<#assign selfname = ProductHelper.getAddProductSelfAddressRel(book.id)!'0' />
这样selfname 就为字符0
修改方3,判断使用“??”值是否为空:
<#assign selfname = ProductHelper.getAddProductSelfAddressRel(book.id)?? />
2.使用list变量时,使用is_exists方法判断一下
<#foreach common in commonList?if_exists>
3.数字格式化插值:#{expr}或#{expr;format}
${book.name?if_exists } //用于判断如果存在,就输出这个值
${book.name?default(‘xxx’)}//默认值xxx
${book.name!"xxx"}//默认值xxx
${book.date?string('yyyy-MM-dd')} //日期格式
${book?string.number} 20 //三种不同的数字格式
${book?string.currency}--<#-- $20.00 -->
${book?string.percent}—<#-- 20% -->
4.循环读取集合: 注意/的使用
<#list student as stu>
${stu}<br/>
</#list>
5.集合长度判断
<#if student?size != 0></#if> 判断=的时候,注意只要一个=符号,而不是==
6.宏/模板
定义:
<#macro 名称 参数1 参数2 参数3=“默认值”>
</#macro>
初步了解: 使用更像一个闭包,可以定义后,在脚本中任意地方引用,并原地起作用
<#macro greet>
<font size="20">Hello Joe!</font>
</#macro>
使用的方式为:
<@greet></@greet>
宏的参数定义,类似js,在宏名后 带参数进行传递定义
<#macro greet person color>
${person}
</#macro>
调用带参数时,注意使用类似XML的属性格式进行传递,不需要关心顺序问题
<@greet person="Fred" color="black"/>
参数默认值定义,如果没有,就必须要求传递完整的参数列表
<#macro greet person color="black">
<font size="+2" color="${color}">Hello ${person}!</font>
</#macro>
7引入文件:
如:lib/boce.ftl文件中引入 my_test.ftl文件
<#import "/lib/my_test.ftl" as my>
<#assign mail="test@sina.com">
<@my.copyright date="1000-2202"/>
${my.mail}
${mail}
8.
<#escape x as (x)!> </#escape> 主要使用在相似的字符串变量输出,比如某一个模块的所有字符串输出都必须是html安全的,这个时候就可以使用该表达式 <#escape x as x?html>
<#compress> <#/compress> :用来压缩空白空间和空白的行
例如:
<#escape x as (x)!>
<#compress>
<@include_page path="/jsp/pub/init.jsp"/>
<#import "/ftl_lib/common/wenan_lib.ftl" as wenan>
<#assign Cache = freeMarkerBean.getBean("com.aebiz.plugin.cache.basic.Cache") />
<#assign cateType="hxg81505" />
......代码等
</#compress>
</#escape>
9 assign
语法
<#assign name=value> or <#assign name1=value1 name2=value2 ... nameN=valueN> or <#assign same as above... in namespacehash> or <#assign name> capture this </#assign> or <#assign name in namespacehash> capture this </#assign>
用例
生成变量,并且给变量赋值 给seasons赋予序列值 <#assign seasons = ["winter", "spring", "summer", "autumn"]> 给变量test加1 <#assign test = test + 1> 给my namespage 赋予一个变量bgColor,
下面可以通过my.bgColor来访问这个变量
<#import "/mylib.ftl" as my>
<#assign bgColor="red" in my>
将一段输出的文本作为变量保存在x里 下面的阴影部分输出的文本将被赋值给x
<#assign x>
<#list 1..3 as n>
${n}
<@myMacro />
</#list>
</#assign>
Number of words: ${x?word_list?size} ${x}
<#assign x>Hello ${user}!</#assign>
error <#assign x=” Hello ${user}!”>
true 同时也支持中文赋值,
如: <#assign 语法> java </#assign>
${语法} 打印输出: java
注意:assign 不可以赋值为null
10:
数字循环
1..5 表示从1到5,原型number..number
对浮点取整数
${123.23?int} 输出123
给变量默认值
${var?default(“hello world<br>”)?html}如果var is null那么将会被hello world<br>替代
判断对象是不是null
<#if mouse?exists>
Mouse found <#else> 也可以直接${mouse?if_exists})输出布尔形
11:
直接调用java对象的方法
${object.methed(args)}
12:
使用${}或#{}在文本部分插入表达式的值,
例如:
${"hello${username}!"}
${"${username}${username}${username}"}
也可以使用+来获得同样的结果:
${"hello"+username+"!"}
${username+username+username}
注意:${}只能用于文本部分而不能出现于标记内。
<#if ${user.login}>或<#if "${user.login}">都是错误的;
<#if user.login>是正确的。
本例中user.login的值必须是布尔类型。
分享到:
相关推荐
本篇将深入探讨如何自定义FreeMarker标签,以扩展其功能并适应特定项目需求。 首先,理解FreeMarker的默认标签语法至关重要。FreeMarker使用${...}表达式来插入变量,#{...}用于输出注释,以及、等控制结构进行条件...
而Freemarker则是一种轻量级的、基于模板的Java模板引擎,常用于Web应用中的动态内容生成,比如JSP替代技术。它允许开发者将业务逻辑与页面展示分离,提高代码的可维护性和可读性。 "eclipse的freemarker插件"是指...
FreeMarker的设计理念是将表现层(视图)和业务逻辑层(控制器)分离,从而实现MVC(Model-View-Controller)架构中的“View”部分。 FreeMarker的核心概念是模板文件,这是一种特殊的文本文件,其中包含可替换的...
`freemarker-2.3.23.jar`是Freemarker库的一个版本,发布于2.3.23,这个版本可能包含了对早期版本的一些改进、新功能或bug修复。 Freemarker的核心概念是模板语言,它是一种声明式的编程方式,允许开发者编写不包含...
1. **创建模板**:在Freemarker中,我们需要创建一个`.ftl`(Freemarker Template Language)文件,其中包含静态文本和动态占位符。动态占位符由${}或#{}包裹,用于插入数据模型中的值。例如,`${title}</h1>`会将...
Freemarker-IDE是一款专为开发人员设计的Eclipse插件,它主要针对Freemarker模板语言提供了强大的支持。在Eclipse这样的集成开发环境中,这款插件能够显著提升开发人员编写和调试`.ftl`(FreeMarker Template ...
这个"freemarker-2.3.28.jar"是Freemarker库的一个具体版本,版本号为2.3.28,它是Java的一个可执行的JAR(Java Archive)文件,用于在Eclipse集成开发环境中作为插件使用。 在Freemarker的2.3.28版本中,我们可以...
赠送jar包:freemarker-2.3.31.jar; 赠送原API文档:freemarker-2.3.31-javadoc.jar; 赠送源代码:freemarker-2.3.31-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.31.pom; 包含翻译后的API文档:...
2.3.23是FreeMarker的一个稳定版本,这个版本的官方中文文档提供了全面的指导和说明,帮助开发者更好地理解和使用这个模板语言。 在FreeMarker的核心概念中,它是一个基于数据驱动的模板语言。这意味着,开发者不...
赠送jar包:freemarker-2.3.30.jar; 赠送原API文档:freemarker-2.3.30-javadoc.jar; 赠送源代码:freemarker-2.3.30-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.30.pom; 包含翻译后的API文档:...
### Velocity与FreeMarker的区别 在IT领域特别是Java开发中,模板引擎是不可或缺的一部分,它们用于将数据模型转换为HTML、PDF、Word文档等格式。在众多模板引擎中,Velocity和FreeMarker是两种非常受欢迎的选择。...
Velocity和Freemarker模板技术比较 模板技术在现代软件开发中扮演着重要角色,而在目前最流行的两种模板技术中, Velocity 和 Freemarker 独占鳌头。在 WebWork2 中,我们可以随意选择使用 Freemarker 或 Velocity ...
Freemarker 简介及标签详解大全 FreeMarker 是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯 Java 编写。FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序。虽然 FreeMarker ...
这个示例是关于如何使用Freemarker来生成XML文件,对于初学者来说,理解这个过程有助于掌握Freemarker的基本用法和XML的生成技巧。 在Java中,Freemarker与数据模型结合,通过模板文件生成输出。对于XML生成,首先...
本话题主要探讨的是如何利用可视化div布局来生成FreeMarker模板,并结合Spring MVC 3框架进行应用。下面将详细阐述这些概念及其相关知识点。 1. **FreeMarker模板引擎**:FreeMarker是一个开源的Java模板引擎,它...
本主题将深入探讨如何利用Freemarker模板和wkhtmltox工具来实现这一功能。 **Freemarker模板** 是一个强大的Java模板引擎,用于动态生成文本输出,如HTML、XML或PDF。它支持变量替换、控制结构(如if/else)和复杂...
FreeMarker提供了一种灵活且强大的方式来处理动态内容,尤其适用于Web开发中的视图层。在FreeMarker中实现通用的分页功能是提高Web应用程序性能和用户体验的重要一环。 ### FreeMarker通用分页知识点解析 #### 1. ...
Freemarker是一个强大的模板引擎,常用于JavaEE应用中的视图层处理,尤其与Struts2等MVC框架配合使用,能实现灵活的动态页面渲染。这个"freemarker Demo"是一个适合初学者的示例项目,旨在帮助新接触Freemarker的...
根据提供的文件信息,我们可以深入探讨FreeMarker的相关知识点及其在网页模板设计中的应用。FreeMarker是一种用Java编写的模板引擎,其主要用途在于帮助开发者高效地生成动态内容,尤其是在Web开发领域有着广泛的...