`

freemarker 数据基础

 
阅读更多

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!})  

 

输出:

 

()  (Jerry)  

 

例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基础v1.1.pdf

    freemarker是一个用Java开发的模板引擎,freemarker并不关心数据的来源,只是根据模板的内容,将数据模型在模板中显示并输出文件(通常为html,也可以生成其它格式的文本文件)

    freemarker-gae-pre2.jar包

    相反, Java程序编写的数据显示(如问题SQL查询) ,并FreeMarker刚刚生成的文本网页,显示的数据准备使用的范本。  FreeMarker 不是一个Web应用框架。 它适合作为一个组成部分在一个Web应用框架,但FreeMarker...

    超完整FreeMarker中文教程,代码

    什么是FreeMarker? ................................................................................................. 7 我们应该阅读什么内容? .............................................................

    Freemarker使用手册、api、中文版教程

    FreeMarker官方参考文档总共有四份,它们分别是  Designer's Guide(网上已有翻译,主要从FreeMarker 的概念上介绍)  Programmer's Guide(本文档所以翻译的部分,主要从框架的设计方面介绍)  XML ...

    毕业设计:基于JAVA的SSM+Freemarker框架的CRM智能办公系统

    CRM-智能办公系统前端基于LayUI框架和Freemarker技术开发,后端基于Java技术以及SSM框架开发,前后端数据通过Ajax交互,数据库采用MySQL,开发工具为IDEA,使用B/S模式开发。本系统为B to C类型的操作性CRM系统,系统...

    FreeMarker中文指导手册

    FreeMarker 手册 .......................................................................................................... 1 用于 FreeMarker 2.3.18 .......................................................

    FreeMarker 手册

    FreeMarker 手册 .......................................................................................................... 1 用于 FreeMarker 2.3.18 .......................................................

    FreeMaker模板

    项目-springmvc+freemarker Freemaker显示map数据 FreeMarker用法 SEO搜索引擎优化基础教程电子书

    FreeMarker设计指南

    快速入门 (1)模板 + 数据模型 = 输出 (2)数据模型 (3)模板 2、数据模型 (1)基础 (2)Scalar变量 (3)hashes 、sequences和集合 (4)方法 (5)宏和变换器 (6)节点 3...

    毕设&课设&项目&实训-数据报警系统,集成freemarker发送邮件.zip

    对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同...

    Freemarker教程_中文版.pdf

    1.2、创建数据模型(Data Model)..........................................................4 1.3、获取模版(template)..................................................................5 1.4、把模版与...

    基于Idea开发的SpringBoot+MySQL的新冠核酸检测系统设计与实现.zip

    其中,Freemarker拿取数据进行展示数据,SpringBoot实现业务对象管理,Jpa作为数据对象的持久化引擎。 系统主要以Java语言作为开发基础,使用了Freemarker+SpringBoot等技术,采用Idea作为开发工具,以MySql作为...

    一个SpringBoot基础项目框架

    根据freemarker模板文件生成word文档 word文档转pdf文档 其他各分支代码功能说明如下: 2.1、RedisDistributedLock分支 自定义注解+AOP+Redis实现分布式锁 这样的好处是:每次在业务代码中想加锁的话,就直接在...

    基于springboot和微信小程序的线上智能点餐系统,课程设计大作业,本科毕业设计,前后端分离,接口数据通信

    客户端用微信小程序实现 服务端由springboot整合,使用了mybatis、kafka、websocket、vue.js、layui、Lombok、freemarker等技术 JDK版本:1.8 数据库:mysql ,微信小程序实现了部分基础功能。 一款基于springboot和...

    基于Spring Boot的购物商城的设计与开发

    为了简化开发并实现程序解耦,选用了Spring Boot框架去搭建后台,在此基础上使用Mybatis连接数据库,避免了繁琐的JDBC代码,利用Freemarker框架减少了业务逻辑代码在表现层的耦合并实现数据展示,从0到1设计并开发了...

    Java一键生成代码到controller层【源码】

    1、具备一定Java编程基础。 2、对springboot,spring,mybatis,mybatis plus,mysql,freemarker等java技术有基本应用。 3、可大大提高开发效率,数据表创建完以后,自动生成entity,mapper.xml,dao,service,...

    uc_demo:联合组件 项目DEMO示例 结合Spring Boot+shiro+layui+Freemarker,集成权限管理、菜单管理、日志自动记录、数据保护等功能,到手就用

    uc_demouc_demo UC快速开发框架登录界面系统代码(数据字典)管理系统账号管理权限组管理系统日志查看Demo示范权限设置uc_demo项目是Union Componen项目中的一个用例。本用例是一个后台的全功能实现,包括以下功能:...

    达内java培训目录

    Java语言基础 算法基础、常用数据结构、企业编程规范。 掌握常见的数据结构和实用算法;培养良好的企业级编程习惯。 Java面向对象 面向对象特性:封装、继承、多态等,面向对象程序设计,基础设计模式等。 掌握面向...

    bookManagement基础案例

    1、使用springboot、springdata jpa、shiro等服务端技术,使用freemarker模版渲染页面;数据源使用Druid; 2、系统中对springdata的查询条件Specification做了简单的封装,更加方便查询条件的灵活使用。 3、前端技术...

    基于SpringBoot的OA办公管理系统.zip-19

    mysql底层数据库,前端采用freemarker模板引擎,Bootstrap作为前端UI框架, 集成了jpa、mybatis等框架。作为初学springboot的同学是一个很不错的项目, 如果想在此基础上面进行OA的增强,也是一个不错的方案。 ###...

Global site tag (gtag.js) - Google Analytics