`
awaitdeng
  • 浏览: 216543 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

freemarker笔记 空值 及数据处理

阅读更多
最近学习了一下Freemarker对于大型门户来说,日访问量如果上万的话,首页内容比较多的话,优化方法除了采用连接池、Css Sprite、Js压缩之外,非常有必要对首页进行静态化的处理,使用Struts2就会接触到Freemarker这个非常好用的静态化工具,搞了半天终于把现在进行的首页进行全静态化。下次再把Freemarker的源码通读一遍
Freemarker学习笔记:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1) 空值Null配置处理
a.通过Configuration设置。Configuration cfg = new Configuration(); cfg.setClassicCompatible(true);//设置属性
b.通过Eviroment设置。
   Environment env = template.createProcessingEnvironment(root, out);
   env.setClassicCompatible(true);
c.通过ftl设置:在ftl前加入<!--#setting classic_compatible=true-->
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2) 空值Null判断
${(category.parentCategory.id)!0}   加括号代表category, category.parentCategory, category.parentCategory.id这三个都会进行判断;  不加括号只判断category.parentCategory.id是否为null
<#if list?exists && list.size != 0 >
空值判断:${book.name?if_exists },
${book.name?default(‘xxx’)}//默认值xxx
${ book.name!"xxx"}//默认值xxx
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3) 时间格式化显示
<#assign datetimeformat="yyyy-MM-dd HH:mm:ss zzz">
<lastBuildDate>${date?string(datetimeformat)}</lastBuildDate>
<pubDate>${date?string(datetimeformat)}</pubDate>

数字格式:${book?string.number}--20
${book?string.currency}--<#-- $20.00 -->
${book?string.percent}—<#-- 20% -->
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4) 字符串截取substring,注意substring中括号的位置
<#if res1.NAME?length<12>
${res1.NAME}
<#else>
${res1.NAME?substring(0,12)}
</#if>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
5) String内置的JavaScript转换: js_string
用途:用于JavaScript转义,转换',",换行等特殊字符
模板:
<script>
alert("${errorMessage?js_string}");
</script>
输出:
<script>
alert("Readonly\'s pet name is \"Cross Bone\"");
</script>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
6) 内置的默认值处理:default
用途: 用于处理默认值
模本:
User: ${userLogin.name?default("Anonymous")}
<td>${(employee.department.manager.name)?default(" ")}</td>

输出:
User: Anonymous
<td> </td>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
7) Sequence内置的计数器: xxx_index
用途:显示序号
模板:
<#list employees as e>
${e_index}. ${e.name}
</#list>

输出:
1. Readonly
2. Robbin
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
8) 插入布尔值:
<#assign foo=ture />
${foo?string("yes","no")} <#-- yes -->
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
9) Sequence内置的分段器: chunk
用途:某些比较BT的排版需求
模板:
<#assign seq = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']>
<#list seq?chunk(4) as row>
<ul>
<li><#list row as cell>${cell} </#list></li>
</ul>
</#list>
<#list seq?chunk(4, '-') as row>  // 不够4个的以“-”填充
<tr>
<td><#list row as cell>${cell} </#list></td>
</tr>
</#list>

输出:
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
</ul>
<ul>
<li>e</li>
<li>f</li>
<li>g</li>
<li>h</li>
</ul>
<ul>
<li>i</li>
<li>j</li>
</ul>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
</tr>
<tr>
<td>e</td>
<td>f</td>
<td>g</td>
<td>h</td>
</tr>
<tr>
<td>i</td>
<td>j</td>
<td>-</td>
<td>-</td>
</tr>
分享到:
评论

相关推荐

    Freemarker学习笔记

    Freemarker学习笔记可以帮助初学者了解,快速掌握Freemarker

    freemarker笔记

    FreeMarker的使用通常与视图解析器结合,例如Spring的FreeMarkerViewResolver,它可以将处理后的模型数据传递给FreeMarker模板进行渲染。在Web开发中,开发者会创建一个FreeMarker模板文件,然后在控制器中准备相应...

    freemarker ajax 请求json数据格式 联动下拉 漂亮的弹出框 提示框

    freemarker ajax 请求json数据格式 联动下拉 漂亮的弹出框 提示框freemarker ajax 请求json数据格式 联动下拉 漂亮的弹出框 提示框freemarker ajax 请求json数据格式 联动下拉 漂亮的弹出框 提示框freemarker ajax ...

    FreeMarker笔记1

    null 处理 当对象为null时,可以使用`??`操作符避免空指针异常: ```freemarker ${user.name?default("匿名用户")} ``` ### 10. 提示方式 在模板中显示提示信息,可以通过占位符配合数据模型中的错误信息: ```...

    freemarker获取数据

    本篇文章将深入探讨如何在Freemarker中获取数据。 一、Freemarker基础 1. 模板语言:Freemarker使用一种简单的文本模板语言,它不包含任何编程语句,只有控制结构(如`if`、`for`)和变量引用。变量通常以`${}`或`...

    freemarker导出doc及docx

    总的来说,“freemarker导出doc及docx”涉及到了Freemarker模板引擎的使用、SpringBoot的集成、以及利用Apache POI等库处理Word文档的技巧。实际操作时,你需要根据项目需求定制模板,设置数据模型,最后通过编程...

    freemarker

    freemarker笔记

    freemarker入门文档及例子

    3. 处理过程:Freemarker引擎将数据模型和模板结合,根据模板中的指令和数据生成最终的输出。 二、Freemarker语法基础 1. 变量表示: `${variable}` 用于输出变量的值,`variable`是Java对象的属性或方法名。 2. ...

    基于FREEMARKER模板的数据采集系统

    虽然具体内容未给出,但通常这样的博客文章会介绍系统的实现细节,如如何配置FreeMarker,如何处理数据采集过程,以及可能遇到的问题和解决方案。在实际应用中,数据采集可能包括网络爬虫技术、API调用或者数据库...

    Freemarker 遍历Map数据

    @RequestMapping(/freemarker) @Controller public class FreemarkerController { //测试1 @RequestMapping(/test1) public String test1(Model model){ //向数据模型放数据 model.addAttribute(name,三年二班)...

    Freemarker 学习笔记一 【乱码解决】

    在使用Freemarker的过程中,遇到乱码问题是一个常见的挑战,特别是当处理不同编码格式的数据时。本篇文章将探讨如何解决Freemarker中的乱码问题,并提供相关源码和工具的使用技巧。 首先,乱码通常源于字符编码不...

    Freemarker简介及标签详解大全

    Freemarker 简介及标签详解大全 FreeMarker 是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯 Java 编写。FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序。虽然 FreeMarker ...

    freemarker 自定义freeMarker标签

    这个类将定义你的自定义标签的行为,包括如何处理输入参数,如何处理模板模型数据,以及如何生成输出。 2. 注册自定义指令:在你的应用程序中,你需要将自定义指令类注册到FreeMarker配置中。这通常是通过`...

Global site tag (gtag.js) - Google Analytics