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-2.3.23.jar`是Freemarker库的一个版本,发布于2.3.23,这个版本可能包含了对早期版本的一些改进、新功能或bug修复。 Freemarker的核心概念是模板语言,它是一种声明式的编程方式,允许开发者编写不包含...
FreeMarker的设计理念是将表现层(视图)和业务逻辑层(控制器)分离,从而实现MVC(Model-View-Controller)架构中的“View”部分。 FreeMarker的核心概念是模板文件,这是一种特殊的文本文件,其中包含可替换的...
赠送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文档:...
这个"freemarker-2.3.28.jar"是Freemarker库的一个具体版本,版本号为2.3.28,它是Java的一个可执行的JAR(Java Archive)文件,用于在Eclipse集成开发环境中作为插件使用。 在Freemarker的2.3.28版本中,我们可以...