freemarker之介绍

freemarker之介绍

----------

 

1.${…}

${…}:FreeMarker将会输出真实的值来替换花括号内的表达式,这样的表达式被称为interpolations插值。

 

2.FTL标签

FTL tags标签(FreeMarker模板的语言标签):FTL标签和HTML标签有一点相似,但是它们是FreeMarker的指令而且是不会直接输出来的东西。这些标签的使用一般以符号#开头。(用户自定义的FTL标签使用@符号来代替#,但这是更高级的主题内容了,后面会详细地讨论)

 

3.Comments注释

Comments注释:FreeMarker的注释和HTML的注释相似,但是它用<#--和-->来分隔的。任何介于这两个分隔符(包含分隔符本身)之间内容会被FreeMarker忽略,就不会输出来了。 

 

4.directives指令

directives指令:就是所指的FTL标签。这些指令在HTML的标签(如<table>和</table>)和HTML元素(如table元素)中的关系是相同的。

 

 

指令示例 

1.if指令

<#if user == "Big Joe">, our beloved leader</#if>
<#if animals.python.price == 0> 
  Pythons are free today! 
</#if>

注意:数字是不用放在引号内的。如果将0放在引号内(”0”),FreeMarker就会将其误判为字符串了。 

使用<#else>标签可以指定当条件为假时程序执行的内容。例如:

<#if animals.python.price < animals.elephant.price> 
  Pythons are cheaper than elephants today. 
<#else> 
  Pythons are not cheaper than elephants today. 
</#if>

如果变量本身就是布尔值(true或者false),那么可以直接让其作为if的条件: 

<#if animals.python.protected> 
  Warning! Pythons are protected animals! 
</#if> 

 

2.list指令 

当需要用列表来遍历集合的内容时,list指令是非常好用的。 

<#list animals as being> 
	<tr><td>${being.name}<td>${being.price} Euros 
</#list> 

list指令的一般格式为:

<#list sequence as loopVariable>repeatThis</#list>

repeatThis部分将会在给定的sequence遍历时在每项中重复,从第一项开始,一个接着一个。在所有的重复中,loopVariable将持有当前项的值。这个循环变量仅存在于<#list …>和</#list>标签之间。  

 

3.include指令

使用include指令,我们可以在当前的模板中插入其他文件的内容。

假设要在一些页面中显示版权声明的信息。那么可以创建一个文件来单独包含版权声明,之后在需要它的地方插入即可。比方说,我们可以将版权信息单独存放在页面文件copyright_footer.html中。 

<hr> 
<i> 
	Copyright (c) 2000 <a href="http://www.acmee.com">Acmee Inc</a>, <br> 
	All Rights Reserved. 
</i> 

当需要用到这个文件时,可以使用include指令来实现插入。 

<html> 
	<head> 
		<title>Test page</title> 
	</head> 
	<body> 
		<h1>Test page</h1> 
		<p>Blah blah... 
		<#include "/copyright_footer.html"> 
	</body> 
</html>

 

4.联合使用指令

在页面也可以多次使用指令,而且指令间可以相互嵌套,正如在HTML元素中嵌套使用标签一样。

<#list animals as being> 
	<tr> 
		<td> 
			<#if being.size == "large"><font size="+1"></#if> 
				${being.name} 
			<#if being.size == "large"></font></#if> 
		<td>${being.price} Euros 
	</tr>
</#list>

 

5.处理不存在的变量 

FreeMarker不能容忍引用不存在的变量,除非明确地告诉它,当变量不存在时如何处理。这里介绍两种典型的处理方法。

一个不存在的变量和一个是null的变量,对于FreeMarker来说是一样的,所以这里所指的丢失包含这两种情况。

不论在哪里引用变量,都可以指定一个默认值来避免变量丢失这种情况,通过在变量名后面跟着一个!和默认值。就像下面的例子,当user从数据模型中丢失时,模板将会将user的值表示为字符串”Anonymous”。(若user并没有丢失,那么模板就会表现出”Anonymous”不存在一样).

如例:

<h1>Welcome ${user!"Anonymous"}!</h1> 

当然也可以在变量名后面通过放置??来询问FreeMarker一个变量是否存在。将它和if指令合并,那么如果user变量不存在的话将会忽略整个问候代码段,如例: 

<#if user??><h1>Welcome ${user}!</h1></#if>  

关于多级访问的变量,比如animals.python.price ,书写代码:animals.python.price!0,仅当animals.python存在而仅仅最后一个子变量price可能不存在(这种情况下我们假设价格是0)。

如果animals或者python不存在,那么模板处理过程将会以“未定义的变量”错误而停止。为了防止这种情况的发生,可以这样来书写代码(animals.python.price)!0。这种情况下当animals或python不存在时表达式的结果仍然是0。

对于??也是同样用来的处理这种逻辑的:animals.python.price??对比(animals.python.price)??来看。 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值