!对输出的空值做处理,只输出无返回值
输出name的值:${name}。如果name为null,就会报错。
输出name的值:${name!}。如果name为null,就不会报错,什么也没输出。(重点)
输出name的值:${name!"默认值"}。如果name为null,就输出”默认值”字符串。(重点)
输出name的值:${name!100}。如果name为null,就输出100。
输出user.name的值:${(user.name)!"默认值”},如果user或name为null,就输出默认值。(重点)
输出user.name的值:${user.name!"默认值”},如果user为null会报错,如果name为null,就输出默认值。
使用default内建函数来处理:${user.name?default('vakin')} (较繁琐)
??测试是否为null,返回boolean值
product.color??将只测试color是否为null
(product.color)??将测试product和color是否存在null
freemarker中??和?的区别
??是判断对象是否为空,例如:<#if object??>object对象不为空(即object存在)</#if>
?后面要加内建函数名,例如:<#if object?exists>object对象不为空(即object存在)</#if>
<#if str??>${str?string}</#if><#--将str以字符串形式显示-->
freemarker的内建函数
${nowDate?time}<#--将现有时间以时间的格式显示,显示结果如:15:13:05-->
${nowDate?date}<#--以日期格式显示,如:2011-4-28-->(date的格式可以在freemarker.properties文件中配置)
日期格式化 ${time?string("yyyy-MM-dd")}
截取字符串 ${str?substring(0,2)}
indexof的使用 ${str?last_index_of(",")}
split的使用
<#list "12,13,14,15"?split(",") as item>
${item}
</#list>
${s?if_exists}
${item_index?if_exists+1}
${user.name?default('vakin')},同上
freemarker运算符
<#if score gte 60>
及格
<#elseif score gte 80 && score lte 90>
良好
<#else>
高材生
</#if>
相关推荐
9. **最佳实践**:合理组织模板文件结构、避免模板过于复杂、正确处理null值等都是使用Freemarker时需要注意的最佳实践。 通过这个压缩包提供的资源,开发者可以全面地学习和使用Freemarker,无论是初学者还是经验...
比如,它会比较FreeMarker和其他模板引擎(如JSP和Velocity)的不同,并解释为什么FreeMarker对null值和不存在的变量敏感,并提供处理方法。此外,FAQ部分还会解答关于数字格式、小数和分组分隔符号显示问题,以及...
以下是对这些内置处理的详细说明: 1. **变量表达式** (`${...}`): FreeMarker的变量表达式用于输出Java对象的属性值。例如,`${user.name}`会尝试获取`user`对象的`name`属性并输出。如果属性不存在或者对象为...
3. 模板处理:Freemarker引擎接收模板和数据模型,然后生成最终的输出文本。 二、Freemarker语法 1. 变量输出:使用`${}`包裹变量名,例如`${name}`,会将对应数据模型中的`name`属性值输出。 2. 注释:使用`注释...
- 节点变量表示树形结构中的一个节点,主要用于XML处理。 #### B. 指令 **1. if, else, elseif** - `<#if condition>` 结构用于条件判断。 - 支持多个 `<#elseif>` 分支。 - 可选的 `<#else>` 分支。 - 示例:...
对复杂的逻辑处理能力有限,不适合做大量业务处理。 5. **内置函数及用法**: FreeMarker提供了丰富的内置函数,如`date`, `number`, `string`等类型的操作,以及`join`, `length`, `sort`, `first`, `last`等集合...
- **空白处理**指的是对模板中的空格、制表符、换行符等空白字符的处理。 - **Freemarker**提供了多种空白处理模式,可以根据需要选择合适的处理方式。 ##### 4.5 替换(方括号)语法 - **方括号语法**是**...
4. **指令**:Freemarker支持一系列指令,如`<#assign>`分配变量,`<#include>`包含其他模板,`<#nested>`处理子模板等,它们扩展了模板的功能。 5. **模板继承与布局**:`<#macro>`定义宏,实现代码复用;`...
null 处理 当对象为null时,可以使用`??`操作符避免空指针异常: ```freemarker ${user.name?default("匿名用户")} ``` ### 10. 提示方式 在模板中显示提示信息,可以通过占位符配合数据模型中的错误信息: ```...
#### 八、处理null值 为了避免在模板中使用可能为null的变量时出现黄色警告,可以使用默认值。 ```html ${(item.title)!"一些默认值"} ``` #### 九、调用Java方法 Freemarker可以直接调用Java中的方法,例如获取...
以下是对Freemarker中Sequence、Hash以及字符串操作函数的详细说明。 一、Sequence的内置函数: 1. `sequence?first`:返回Sequence的第一个元素,如果Sequence为空,返回null。 2. `sequence?last`:返回Sequence...
1. 变量表达式 `${...}`:这是FreeMarker中最基本的表达式,用于输出变量的值。例如`${user.name}`会输出用户对象的name属性。 2. 注释 `<!--#...-->`:FreeMarker支持HTML样式的注释,内容不会被渲染到最终输出。 ...
FreeMarker支持对序列(如列表)进行循环处理,同时提供了`break`语句用于提前终止循环。 ```fml ... // 处理每个item 特定值"> <#break> // 当遇到特定值时,跳出循环 ``` ### 3. 包含文件 #### include ...
这里所说的空值,实际上也包括那些并不存在的变量,对于一个Java的 null值而言,我们认为这个变量是存在的,只是它的值为null,但对于FreeMarker模板而言,它无法理解null值,null值和不存在的变 量完全相同. 为了处理缺失...
"freemarker04_空值的处理"这个主题,正是关注如何在Freemarker模板中优雅地处理这些空值,避免因空值导致的异常或不期望的输出。 1. **空值检查** 在Freemarker模板中,可以使用`?has_content`指令来判断变量是否...
- 自定义空值处理,通过`freemarker.template.Configuration`设置`NullModel`。 7. **示例**: - 基本输出:`${user.name}`,输出用户对象的name属性。 - 条件判断:`管理员:普通用户:</#if>`。 - 循环遍历:`$...
以下是对`3freemarker指令1`中涉及知识点的详细说明: 1. **ftl的if/else判断语句**: 在Freemarker模板语言中,`if`和`else`指令用于条件判断。基本语法如下: ```freemarker <!-- 当expression为真时执行的...
7. **空值(Null)**: 当变量不存在或者值为null时,Freemarker会将其视为`null`。你可以检查一个变量是否为空,如`${variable?exists}`。 8. **模板文本(TemplateText)**: 这是Freemarker特有的数据类型,用于表示未...
- Web环境中的变量查找顺序:Freemarker会按照特定顺序查找模板中的变量值。 - 使用FTL标签:在模板中可以与服务器端标签库配合使用。 - 初始化共享变量:在应用启动时设置全局变量。 - 与WebWork整合:配置...