FreeMarker数据基础
2010-07-02 09:55:02| 分类: FreeMarker
2.3.1 | 标签: |字号大中小 订阅
1.数据两种表示(在${}中):
例如下:
|
|
|
|
(root) | +- animals | | | +- (1st) | | | | | +- name = "mouse" | | | | | +- size = "small" | | | | | +- price = 50 | | | +- (2nd) | | | | | +- name = "elephant" | | | | | +- size = "large" | | | | | +- price = 5000 | | | +- (3rd) | | | +- name = "python" | | | +- size = "medium" | | | +- price = 4999 | +- whatnot | +- fruits | +- (1st) = "orange" | +- (2nd) = "banana"
|
|
|
|
第一种表示方法:whatnot.fruits[1](表示的是fruits下的值为banana的变量)。
第二种表示方法:直接用点号分隔到属性-----animals[0].size(表示animals下的第一个部分中的size属性,其值为small)。
2.FreeMarker中的三种类型:
${...}:输出时,FreeMarker将会用确定的值代替它。
FTL标签:在FreeMarker中使用#开头。
注释:在FreeMarker中注释方法为<#-- -->。
例1:
简单的判断:
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>
Welcome ${user}<#if user == "Big Joe">, our
beloved leader</#if>!
</h1>
<p>Our latest
product:
<a
href="${latestProduct.url}">${latestProduct.name}</a>!
<#if animals.python.price < animals.elephant.price>
Pythons are cheaper than elephants today.
<#else>
Pythons are not
cheaper than elephants
today.
</#if>
</body>
</html>
例2:
列表list:
输入:
|
|
|
|
<p>We have these animals: <table border=1> <tr><th>Name<th>Price <#list animals as being> <tr><td>${being.name}<td>${being.price} Euros </#list> </table>
|
|
前台输出:
|
|
|
|
<p>We have these animals: <table border=1> <tr><th>Name<th>Price <tr><td>mouse<td>50 Euros <tr><td>elephant<td>5000 Euros <tr><td>python<td>4999 Euros </table>
|
|
例3:
包含文件(include):
|
|
|
|
<html> <head> <title>Test page</title> </head> <body> <h1>Test page</h1> <p>Blah blah... <#include "/copyright_footer.html"> </body> </html>
|
|
|
|
3.嵌套使用指令
例4:
输出列表并使size为"larger"的输出font比其他的大:
<p>We have these animals: <table border=1> <tr><th>Name<th>Price <#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 </#list> </table>
|
|
|
|
4.两种处理变量丢失方法。
FreeMarker不能容忍变量丢失,除非事先指示如果丢失怎么处理
(!注意:在FreeMarker中不存在变量和变量的值为null是等价的,所以这里这两种情况都适用)
第一种方式:
|
|
|
|
<h1>Welcome ${user!"Anonymous"}!</h1>
|
|
第二种方式:
|
|
|
|
<#if user??><h1>Welcome ${user}!</h1></#if>
|
|
(!注意:如果写成这样animals.python.price!0,只有animals.python
没有丢失才正确,
如果animals或者python丢失,将会报"undefined
variable"错误,这时,你可以写成(animals.python.price)!0的模式,可以避免这个问题)
(!注意:和上面一样animals.python.price??也应该写成(animals.python.price)??)
(!注意:在2.4版本及之前,${x!1 + y}将被误解为${x!(1 + y)} ,所以,应当写成${(x!1) +
y}形式)
如果希望默认值为0或者false,可以写成如下形式:
(${mouse!}) <#assign mouse = "Jerry"> (${mouse!})
|
|
|
|
输出:
例5:
|
<#if mouse??> Mouse found <#else> No mouse found </#if> Creating mouse... <#assign mouse = "Jerry"> <#if mouse??> Mouse found <#else> No mouse found </#if>
|
|
|
|
输出:
|
|
|
|
No mouse found Creating mouse... Mouse found
|
|
|
|
5.FreeMarker中特殊变量及意义
官方地址:http://www.freemarker.org/docs/ref_specvar.html
分享到:
相关推荐
freemarker是一个用Java开发的模板引擎,freemarker并不关心数据的来源,只是根据模板的内容,将数据模型在模板中显示并输出文件(通常为html,也可以生成其它格式的文本文件)
相反, Java程序编写的数据显示(如问题SQL查询) ,并FreeMarker刚刚生成的文本网页,显示的数据准备使用的范本。 FreeMarker 不是一个Web应用框架。 它适合作为一个组成部分在一个Web应用框架,但FreeMarker...
什么是FreeMarker? ................................................................................................. 7 我们应该阅读什么内容? .............................................................
FreeMarker官方参考文档总共有四份,它们分别是 Designer's Guide(网上已有翻译,主要从FreeMarker 的概念上介绍) Programmer's Guide(本文档所以翻译的部分,主要从框架的设计方面介绍) XML ...
CRM-智能办公系统前端基于LayUI框架和Freemarker技术开发,后端基于Java技术以及SSM框架开发,前后端数据通过Ajax交互,数据库采用MySQL,开发工具为IDEA,使用B/S模式开发。本系统为B to C类型的操作性CRM系统,系统...
FreeMarker 手册 .......................................................................................................... 1 用于 FreeMarker 2.3.18 .......................................................
FreeMarker 手册 .......................................................................................................... 1 用于 FreeMarker 2.3.18 .......................................................
项目-springmvc+freemarker Freemaker显示map数据 FreeMarker用法 SEO搜索引擎优化基础教程电子书
快速入门 (1)模板 + 数据模型 = 输出 (2)数据模型 (3)模板 2、数据模型 (1)基础 (2)Scalar变量 (3)hashes 、sequences和集合 (4)方法 (5)宏和变换器 (6)节点 3...
对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同...
1.2、创建数据模型(Data Model)..........................................................4 1.3、获取模版(template)..................................................................5 1.4、把模版与...
其中,Freemarker拿取数据进行展示数据,SpringBoot实现业务对象管理,Jpa作为数据对象的持久化引擎。 系统主要以Java语言作为开发基础,使用了Freemarker+SpringBoot等技术,采用Idea作为开发工具,以MySql作为...
根据freemarker模板文件生成word文档 word文档转pdf文档 其他各分支代码功能说明如下: 2.1、RedisDistributedLock分支 自定义注解+AOP+Redis实现分布式锁 这样的好处是:每次在业务代码中想加锁的话,就直接在...
客户端用微信小程序实现 服务端由springboot整合,使用了mybatis、kafka、websocket、vue.js、layui、Lombok、freemarker等技术 JDK版本:1.8 数据库:mysql ,微信小程序实现了部分基础功能。 一款基于springboot和...
为了简化开发并实现程序解耦,选用了Spring Boot框架去搭建后台,在此基础上使用Mybatis连接数据库,避免了繁琐的JDBC代码,利用Freemarker框架减少了业务逻辑代码在表现层的耦合并实现数据展示,从0到1设计并开发了...
1、具备一定Java编程基础。 2、对springboot,spring,mybatis,mybatis plus,mysql,freemarker等java技术有基本应用。 3、可大大提高开发效率,数据表创建完以后,自动生成entity,mapper.xml,dao,service,...
uc_demouc_demo UC快速开发框架登录界面系统代码(数据字典)管理系统账号管理权限组管理系统日志查看Demo示范权限设置uc_demo项目是Union Componen项目中的一个用例。本用例是一个后台的全功能实现,包括以下功能:...
Java语言基础 算法基础、常用数据结构、企业编程规范。 掌握常见的数据结构和实用算法;培养良好的企业级编程习惯。 Java面向对象 面向对象特性:封装、继承、多态等,面向对象程序设计,基础设计模式等。 掌握面向...
1、使用springboot、springdata jpa、shiro等服务端技术,使用freemarker模版渲染页面;数据源使用Druid; 2、系统中对springdata的查询条件Specification做了简单的封装,更加方便查询条件的灵活使用。 3、前端技术...
mysql底层数据库,前端采用freemarker模板引擎,Bootstrap作为前端UI框架, 集成了jpa、mybatis等框架。作为初学springboot的同学是一个很不错的项目, 如果想在此基础上面进行OA的增强,也是一个不错的方案。 ###...