我是靠谱客的博主 潇洒人生,最近开发中收集的这篇文章主要介绍freemarker之模板开发(其它之在模板中定义变量),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

freemarker之模板开发(其它之在模板中定义变量)

----------

模板可以使用在数据模型中定义的变量。在数据模型之外,模板本身也可以定义变量来使用这些临时变量可以适应FTL指令来创建和替换。要注意每一次模板执行时都维护它自己的这些变量的私有设置,这些变量是在页面用以呈现信息的。变量的初始值是空,当模板执行结束这些变量便被销毁了。

你可以访问一个在模板里定义的变量,就像是访问数据模型根上的变量一样这个变量比定义在数据模型中的同名参数有更高的优先级。那就是说,如果你恰巧定义了一个名为"foo"的变量,而在数据模型中也有一个名为"foo"的变量,那么模板中的变量就会将数据模型根上的变量隐藏(而不是覆盖!)

在模板中可以定义三种类型的变量:

1.简单变量:它能从模板中的任何位置来访问,或者从使用include指令引入的模板访问。可以使用assignmacro指令来创建或替换这些变量。

2.局部变量:它们只能被设置在宏定义体内,而且只在宏内可见。一个局部变量的生存周期只是宏的调用过程。可以使用local指令在宏定义体内创建或替换局部变量。

3.循环变量:循环变量是由指令(如:list)自动创建的,而且它们只在指令的开始和结束标记内有效。宏的参数是局部变量而不是循环变量。

示例,使用assign创建和替换变量

<#assign x=1> <#-- 创建变量x -->
${x}
<#assign x = x+3> <#-- 替换变量x -->
${x}

注意:局部变量也会隐藏(不是覆盖)同名的简单变量。循环变量也会隐藏(不是覆盖)同名的局部变量和简单变量。

 

例: 

<#assign x="plain">
${x}	<#-- 这里是普通变量 -->
<#list ['loop'] as x>
	${x}	<#-- 现在循环变量隐藏了普通变量 -->
	<#assign x = "plain2">	<#--替换普通变量,隐藏在这里不起作用 -->
	${x}	<#--它仍然隐藏普通变量 -->
</#list>
${x}		<#-- 普通变量的新值 -->
<#macro test>
	${x}	<#-- 这里我们仍然看到的是普通变量 -->
	<#local x = "local">
	${x}	<#-- 现在局部变量隐藏了它 -->
	<#list ["loop"] as x>
		${x}	<#-- 现在循环变量隐藏了局部变量 -->
	</#list>
	${x}	<#-- 现在又可以看到局部变量了 -->
</#macro>

 

注意:内部循环变量可以隐藏外部循环变量。

如例:

<#list["loop 1"] as x>
	${x}
	<#list ["loop 2"] as x>
		${x}
		<#list ["loop 3"] as x>
			${x}
		</#list>
	</#list>
</#list>

 

有时会发生一个变量隐藏数据模型中的同名变量,但是如果想访问数据模型中的变量,就可以使用特殊变量globals。如例,假设我们在数据模型中有一个名为user,值为"Big Joe"的变量。

<#assign user = "Joe Hider">
${user}		<#-- 打印:Joe Hider -->
${.globals.user}	<#-- 打印:Big Joe -->

 

最后

以上就是潇洒人生为你收集整理的freemarker之模板开发(其它之在模板中定义变量)的全部内容,希望文章能够帮你解决freemarker之模板开发(其它之在模板中定义变量)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部