FreeMarker设计指南(2)

设计

FreeMarker设计指南(2)
2、数据模型

(1)基础

l         在快速入门中介绍了在模板中使用的三种基本对象类型:scalars、hashes 和sequences,其实还可以有其它更多的能力:

Ø         scalars:存储单值

Ø         hashes:充当其它对象的容器,每个都关联一个唯一的查询名字

Ø         sequences:充当其它对象的容器,按次序访问

Ø         方法:通过传递的参数进行计算,以新对象返回结果

Ø         用户自定义FTL标记:宏和变换器

l         通常每个变量只具有上述的一种能力,但一个变量可以具有多个上述能力,如下面的例子:

(root)

|

+- mouse = "Yerri"

     |

     +- age = 12

     |

     +- color = "brown"> 

l         mouse既是scalars又是hashes,将上面的数据模型合并到下面的模板:

${mouse}       <#-- use mouse as scalar -->

${mouse.age}   <#-- use mouse as hash -->

${mouse.color} <#-- use mouse as hash --> 

l         输出结果是:

Yerri

12

brown 

(2)Scalar变量

l         Scalar变量存储单值,可以是:

Ø         字符串:简单文本,在模板中使用引号(单引号或双引号)括起

Ø         数字:在模板中直接使用数字值

Ø         日期:存储日期/时间相关的数据,可以是日期、时间或日期-时间(Timestamp);通常情况,日期值由程序员加到数据模型中,设计者只需要显示它们

Ø         布尔值:true或false,通常在<#if …>标记中使用

(3)hashes 、sequences和集合

l         有些变量不包含任何可显示的内容,而是作为容器包含其它变量,者有两种类型:

Ø         hashes:具有一个唯一的查询名字和它包含的每个变量相关联

Ø         sequences:使用数字和它包含的每个变量相关联,索引值从0开始

l         集合变量通常类似sequences,除非无法访问它的大小和不能使用索引来获得它的子变量;集合可以看作只能由<#list …>指令使用的受限sequences

(4)方法

l         方法变量通常是基于给出的参数计算值

l         下面的例子假设程序员已经将方法变量avg放到数据模型中,用来计算数字平均值:

The average of 3 and 5 is: ${avg(3, 5)}

The average of 6 and 10 and 20 is: ${avg(6, 10, 20)}

The average of the price of python and elephant is: ${avg(animals.python.price, animals.elephant.price)}

(5)宏和变换器

l         宏和变换器变量是用户自定义指令(自定义FTL标记),会在后面讲述这些高级特性

(6)节点

l         节点变量表示为树型结构中的一个节点,通常在XML处理中使用,会在后面的专门章节中讲述

时间: 2024-11-05 12:11:16

FreeMarker设计指南(2)的相关文章

FreeMarker设计指南(4) (完)

设计 FreeMarker设计指南(4) (完) 4.杂项 (1)用户定义指令 l         宏和变换器变量是两种不同类型的用户定义指令,它们之间的区别是宏是在模板中使用macro指令定义,而变换器是在模板外由程序定义,这里只介绍宏 l         基本用法 Ø         宏是和某个变量关联的模板片断,以便在模板中通过用户定义指令使用该变量,下面是一个例子: <#macro greet>   <font size="+2">Hello Joe!&

FreeMarker设计指南(3)

设计 FreeMarker设计指南(3) 3.模板 (1)整体结构 l         模板使用FTL(FreeMarker模板语言)编写,是下面各部分的一个组合: Ø         文本:直接输出 Ø         Interpolation:由${和},或#{和}来限定,计算值替代输出 Ø         FTL标记:FreeMarker指令,和HTML标记类似,名字前加#予以区分,不会输出 Ø         注释:由<#--和-->限定,不会输出 l         下面是以一个具

FreeMarker语法指南

  FreeMarker概述 l         FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 l         FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 l         虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图) l         FreeMarker不是一个Web应用框架,而适合作为Web应

交互设计指南:信息可及

 可及,通俗的说是"可以达到",加上主语和宾语,在"交互设计"这个大的语境下,含义应该是"用户可以达到自己的操作目标",这不是和"有效性-用户的操作是有效的"重复了吗?其实,在交互设计实用指南中,"可及"是一个狭义的概念,是放在有效性下面的,具体解释为"色盲.肢体残疾等特殊人士可以完成基本操作".更扩展一下,这个特殊人群应该还包括老人儿童,文盲等对信息使用不擅长的人.       也就是

PPT高大上设计指南

  PPT高大上设计指南           所以,在这一部分,就跟各位分享一些提升PPT颜值的经验. 1.排版 咱们不如这样来思考,面对很多文字的 PPT 页面,我们应该如何来解决? 比如咱们现在要对这个页面来进行排版: 第一步,拆解. 把一整段的文字内容,按照观点相近性原则,分成小的部分. 就拿上面的文字内容来举例,咱们可以分为 3 个部分: 现在基本上可以看出层次了,但缺少美观性,重点也不突出.那怎么办呢? 第二步,提炼小标题,突出重点. 现在,我们可以一眼看出来,关于如何学好英语的 3

用户体验设计指南的引入

实际上这样子的一个指南我是完全没有能力去创建的,但是在工作的过程当中,确实又感觉到因为规范的缺失导致沟通困难和协作不顺利,所以我思考这个问题的目的实际上更多的是为了帮助自己理清思路. 以我浅薄的认识,这样一个指南某种程度上类似于阶段性的总结,引入的目的主要为了以下几个方面: 人文环境的营造,思想上的共识,理解做产品的目的 沟通的顺畅,尽量避免在各个环节中信息传达的误解和误差 尽量避免为自己开发,为自己设计,为了美丽而美丽 促进团队的学习和分享,整体战斗力的提升 概念的建立,然后在实践中发现并慢慢

WINDOWS PHONE 8 UI 设计指南

  @TerryFan (思科云协作部门用户体验设计师):最近在准备Windows Phone 8的设计工作,寻找资料时看到这篇文章,感觉有点像是MSDN里design guide的总结,是快速入门WP设计的绝佳文献,由于本人对WP的理解还不够深,而文章中有很多WP的专有词汇和描述,所以翻译难免有误,希望大家指正. 欢迎关注我的微信公众号"开卷有译"获得新文章推送. ========================== 我是设计的分割线 ========================

超详的GOOGLE GLASS界面设计指南

 开发指南"> 编者按:这篇文章绝对值得收藏,Google Glass界面设计指南由用户界面.设计原则.设计模式和视觉风格4方面组成,说是一篇手把手的设计教程也不为过,特别是百度同学的专业翻译,保证了文章质量的原汁原味.向未来看齐的设计师们感受一下吧! 一.用户界面 本章将介绍Glass的主要UI组件.它们的使用场景,以及用户如何与它们进行交互操作. 1.1 时间轴概念是 Glass 用户体验的主体 Google Glass的主要用户界面是由分辨率为640x360px的卡片组成的时间轴.它

设计师必看的ANDROID WEAR设计指南

  一种新形式需要一种新的UI设计模式.在较高层次上,Android的可穿戴设备UI主要由建议和询问这两个核心方面组成.应用程序在这两方面扮演重要的角色. 建议:信息情景 上下布局是一个垂直列表,列表中的每一条会显示有用的或及时的信息.就像现在Android手机和平板上的Google浏览器一样,用户垂直滑动界面,了解卡片的简要信息或是将对自己有用的东西查看更多.在屏幕上,一次只会显示一张卡片,而背景图片常常可以提供额外的可视化信息.应用程序可以创建卡片,如果这张卡片是最常用的,可以将它插入到上下