"这是一份关于Freemarker的个人学习笔记,主要涵盖了Freemarker的常用标签用法、嵌套标签的应用以及一个基于Spring Boot的代码生成器的实现。笔记中还提供了示例代码和使用技巧,帮助理解Freemarker模板语言的运用。" 在Freemarker中,`?exists` 和 `?if_exists` 是两个非常关键的内建函数,它们用来检查变量是否存在。`?exists` 返回一个布尔值,表示变量是否已经被定义或初始化。如果变量存在,它会返回 `true`,否则返回 `false`。而 `?if_exists` 与 `?exists` 类似,但在变量不存在时,它不会抛出异常,而是返回 `null`。 例如: ```freemarker <#ifs?exists> ${s?if_exists} </#ifs> ``` 这段代码会检查 `s` 是否存在,如果存在则输出其值,如果不存在则不输出任何内容,也不会抛出异常。 在处理数字时,`?default` 可以用来设置默认值。例如: ```freemarker ${t?default(1000)} ``` 如果 `t` 的值未定义或为 `null`,上述表达式会输出 `1000`。`?c` 则是将数字转换为货币格式。 在处理列表时,`<#list>` 标签用于遍历一个集合,如数组或列表。例如: ```freemarker <#list ["winter", "spring", "summer", "autumn"] as x> ${x} </#list> ``` 这段代码会依次输出季节名称。 此外,Freemarker允许在`<#list>`标签中使用范围操作,如`2..5`,这将创建一个包含2到5(包括2和5)的整数序列。如果省略起始或结束值,Freemarker会自动推断,例如`5..`表示从5开始到最大整数,`..5`表示从最小整数到5。 在HTML表格生成方面,笔记中的示例展示了如何通过计算字段数量除以行数的余数来填充空格,以保持表格列的对齐。这种技巧常用于生成动态表格布局。 最后,笔记提到了访问数组元素的方式,例如 `${user[0]}` 和 `${user[4]}`,以及获取数组子集的操作 `${user[1..4]}`。`?tc` 和 `?omc` 分别用于转换字符串为特定格式,如日期格式化。 这些内容只是Freemarker模板语言的一部分,实际使用中还有更多功能,如条件语句、循环控制、函数调用等,都是开发Web应用时不可或缺的工具。通过深入学习和实践,可以更有效地利用Freemarker生成动态HTML或其他文本格式的输出。
<#if s?exists>
${s?if_exists}
exists用在逻辑判断,而if_exists用来打印东西时用到,如果存在打印,不存在打印空字符串.
exp1?exists将会被exp1??代替
exp1?if_exists将会被exp1!代替
exp1?default(exp2)将会被exp1!exp2.
数字逗号,1,000 转变成 1000 ${t?c}
去掉","逗号呢.,加上"?c"就可以了。
FTL区分大小写,所以list是正确的FTL指令,而List不是;${name}和${NAME}是不同的
如果使用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息
FreeMarker会忽略FTL标记中的空白字符, 但是,<、</和指令之间不允许有空白字符
局部变量隐藏(而不是覆盖)同名的plain变量;循环变量隐藏同名的局部变量和plain变量
==================序列=================
序列:由逗号分隔的子变量列表,由方括号限定,索引从0开始
例如: <#list ["winter", "spring", "summer", "autumn"] as x>
${x}
</#list>
可以使用数字范围定义数字序列,例如2..5等同于[2, 3, 4, 5],但是更有效率,注意数字范围没有方括号,可以定义反递增的数字范围,如5..2
序列片断:使用[startIndex..endIndex]语法,从序列中获得序列片断(也是序列);startIndex和endIndex是结果为数字的表达式
<#assign rows = 4 />
<#assign remainder = 0 />
<#list fields as field>
<#assign remainder = fields?size % rows />
<tr>
</#if>
<td width="8%">${field.fieldDisplay}:</td>
<#if (field_index % rows == (rows-1)) >
</tr>
</#if>
</#list>
<#list (remainder+1)..rows as i >
<td width="8%"> </td>
</#list>
<#if remainder != (rows-1)></tr></#if>
<#if (field_index != (fields?size-1))>, </#if>
=====. 子串 ===============================
假设user的值为”tom cat”
${user[0]}${user[4]} ? tc
${user[1..4]} ? om c
===================散列=================
散列(hash):由逗号分隔的键/值列表,由大括号限定,键和值之间用冒号分隔
例如:{"name":"green mouse", "price":150}
键和值都是表达式,但是键必须是字符串
${..}只能用于文本部分,下面的代码是错误的:
剩余22页未读,继续阅读
- 粉丝: 11
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展