`
lgstarzkhl
  • 浏览: 330768 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

freemarker学习

    博客分类:
  • java
阅读更多
第一招:迭代Map
      假设你有一个Map,像这样:

{"name":"mouse", "price":50 , "weight":30}  


如何来迭代输出?

<#-- 这里模拟了一个Map集合,定义了三对键值 -->  
<#assign h = {"name":"mouse", "price":50, "weight":30}>  
  
<#-- h?keys 将Map的key取出赋值,实质是调用了一个包装类的方法,   
从这里我们也可以学到如何去调用一个类的方法 -->  
<#assign keys = h?keys>    
  
<#-- 关键点:${h[key]} 通过这样的方式,访问到了Map中的value属性 -->  
<#list keys as key>${key} = ${h[key]}; </#list>  



输出结果:

name = mouse; price = 50; weight = 30;   


第二招:如何判定字符串相等
      这个有点小题大作,呵呵,其实很简单

<#-- 定义了一种动物——狗 -->  
<#assign annimal = "Dog">  
  
<#-- 做一下条件判断,如果是狗就输出"Wang! Wang!"   
注意:这里使用一个"="-->  
<#if annimal = "Dog">  
Wang! Wang!   
<#else>  
Ga! Ga!   
</#if>  


输出结果:

Wang! Wang!   


第三招:处理空值
      先要说明的是,在freemarker中,如果你试图去访问一个不存在的值(null),或者该值在访问时还没有被初始化,
那么它会毫不犹豫的抛给一个错误,并且立即终止模板的执行过程。为什么这么变态?



如何对付这样的情况?
答案:在它访问这个值失败的时候,给它一个默认的值!嘻嘻……



怎么赋默认值?
用这样的语法:
unsafe_expr!default_expr 或 unsafe_expr! 或 (unsafe_expr)!default_expr 或 (unsafe_expr)!

<#-- 想要输出mouse,但是它没有被赋值,所以指定默认值为"No mouse"   
当然"!"后面的这个值可以是一个表达式-->  
${mouse!"No mouse."}   
  
<#-- 给mouse赋值 "Jerry" -->  
<#assign mouse="Jerry">  
  
<#-- 再次访问mouse -->  
${mouse!"No mouse."} 


输出结果:

No mouse.   
Jerry 


另外对于"!"后面没有写任何值的情况,那么它的值可能是空String、空sequence 、空hash。
但是如果你想默认值是0或者false,那么你最好还是显式的指定,因为它不会对你那么友好的(Bad luck!)

还需要注意的是:

1. product.color!"red"    
2. (product.color)!"red"    
  
这两种写法所表示的含义是不一样的:   
第一种写法只处理color为空的情况,对于product为空则束手无策。   
第二种写法则可以同时处理product及color同时(或任意)为空的情况。


插播,如何判断空值?
语法:unsafe_expr?? 或 (unsafe_expr)?? 返回值为true和false
第四招:几个常用的函数
    使用函数的方式就像这样:user?upper_case 简单吧?

字符串函数:

html:将会把一些特殊的html字符替换掉(比如:把 "<" 替换为"&lt;")

cap_first:首字母大写
lower_case:转化为小写
upper_case:转化为大写
trim:去掉首尾的空白,包括空格、Tab、回车、换行


例子:

<#-- 定义test值为"Tom & Jerry" -->  
<#assign test = "Tom & Jerry">  
${test?html}   
${test?upper_case?html}   
  
输出为:   
Tom & Jerry   
TOM & JERRY 


序列(也就是常说的List或Set等集合)函数:

size:显示该序列的大小



数学函数:
        int:取整(例如: -1.9?int 返回值是 -1)

分享到:
评论

相关推荐

    freemarker学习资料汇总

    本压缩包集合了丰富的Freemarker学习资源,涵盖从基础到进阶的各种知识点,以下是这些文档中可能包含的详细内容: 1. **Freemarker中文手册.pdf**: 这份手册通常会详细介绍Freemarker的基本概念,如模板语言、...

    freemarker 学习

    综上,FreeMarker学习的内容广泛且深入,涵盖了模板语言的使用、配置、源码解析、最佳实践等多个方面。通过学习FreeMarker,开发者可以更好地控制和生成动态内容,提高代码的可读性和可维护性。

    freemarker学习例子

    这个“freemarker学习例子”应该包含了一些基础到进阶的Freemarker用法,帮助初学者快速上手。 在Freemarker中,主要涉及以下几个核心概念: 1. **模板(Templates)**:模板是Freemarker的核心,它是HTML或其他文本...

    freemarker学习资料

    在快速入门中,我们看到FreeMarker的基本工作原理是通过模板中的特定指令,如`${...}`,将动态数据插入到静态模板中。例如,以下模板展示了如何欢迎用户并显示最新产品的信息: ```html &lt;title&gt;Welcome! &lt;h1&gt;...

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

    这篇“Freemarker学习笔记一【乱码解决】”将指导我们如何解决这个问题。 首先,我们需要了解乱码的常见原因。在Java Web开发中,乱码通常与以下因素有关: 1. **文件编码**:Freemarker模板文件(.ftl)的编码...

    FreeMarker学习资料

    FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:;格式部分,不会输出 3,插值:即${...}或#{...}格式的部分,将使用数据模型中的部分替代输出 4,...

    FreeMarker学习笔记

    FreeMarker学习笔记FreeMarker学习笔记FreeMarker学习笔记

    Freemarker学习笔记

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

    学习freemarker文档

    以下是对 Freemarker 学习中涉及的关键知识点的详细说明: 1. **环境搭建**: - 创建Java项目:首先,你需要在你的开发环境中新建一个Java项目,例如`TestFreeMarker`。 - 引入库:添加Freemarker库,通常是通过...

    FreeMarker 学习手册

    FreeMarker 学习手册 详细介绍FreeMarker模板技术的手册

    FreeMarker学习资料整理

    下面,我们将深入探讨FreeMarker的基础知识、应用场景以及如何进行学习。 1. **基础概念** - **模板**:FreeMarker的核心是模板,它是由开发者编写的HTML或XML文件,其中嵌入了特定的FreeMarker语法,用于动态生成...

    FreeMarker学习代码小结

    在本篇文章中,我们将深入探讨FreeMarker的学习要点,包括其基本概念、语法以及实际应用。 一、基本概念 1. 模板(Template):FreeMarker的中心是模板文件,它是一种特殊的文本文件,包含固定文本和变量。变量是由...

    FreeMarker相关学习文档

    提供的"FreeMarker相关学习文档"可能包括模板语法详解、最佳实践、示例代码等内容,可以帮助初学者快速上手。通过阅读这些资料,你可以深入了解FreeMarker的各个方面,从而更好地利用这个强大的模板引擎。 总结,...

    Freemarker学习总结.pdf

    以下是对Freemarker中Sequence、Hash以及字符串操作函数的详细说明。 一、Sequence的内置函数: 1. `sequence?first`:返回Sequence的第一个元素,如果Sequence为空,返回null。 2. `sequence?last`:返回Sequence...

    Freemarker 学习总结

    以下是对 Freemarker 学习内容的详细总结: 一、Sequence 内置函数 1. `sequence?first`: 获取序列的第一个元素。 2. `sequence?last`: 获取序列的最后一个元素。 3. `sequence?reverse`: 反转序列中的元素顺序。 4...

Global site tag (gtag.js) - Google Analytics