`
newspringwork
  • 浏览: 101404 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Freemarker一些常用知识

 
阅读更多

1. Freemarker中的宏,可以看成Java中的方法,语法如下:

定义: 
  <#macro print msg_m=123>
    <h3>测试宏的内容,消息:${msg_m}</h3>
    <#nested>
  </#macro>
调用:
  <@print msg_m="Hello">可有可无的内容</@print>

 (1).其中参数msg_m,由于宏定义时有默认值,调用宏时可以不指定其值;

 (2).<#nested>表示输出调用宏时标签<@print>和</@print>之间的内容,可以重复;

 (3).msg_m参数不是必须定义的,如果定义了,调用时应该指定值或者定义默认值,调用时也不能传没定义的参数;

 (4).结束标识也可写为:</@>

 

2.宏中嵌套的内容(nested模板)也可以接收参数,如下面就是一个遍历宏,给<#nested>的内容传入循环变量和循环索引值:

<#macro loop col>
   <#local max=col?size-1>
   <#list 0..max as idx>
      <#nested col[idx],idx>
   </#list>
</#macro>

调用
<@loop col=master.managers;item,index>
    ${index+1}. ${item}
</@loop>

#list函数也可以取得索引,上面例子只是为了说明如何取得给<#nested>模板传值
<#list master.managers as item>
    ${item_index+1}. ${item}
</#list>

 

3.关于变量

    (1).macro宏中的局部变量使用#local

    (2).普通变量使用#assign

    (3).循环变量如#list users as usr中间的usr

    (4).变量作用域重叠时,作用域小的会覆盖作用域更大的,不过也有特殊,如:要访问数据模型中的msg,页面也定义了一个局部变量msg,那么可以使用${.globals.msg}访问

 

4.命名空间

 定义:

<#inport "/lib/header.ftl" as head>
${head.username}
<#assign username="King" in head>
${head.username}
assign修改的是命名空间中的变量值
 5.list指令遍历集合时,如何取得当前索引
   (1)使用varname_index:
<#list master.managers as item>
	${item_index+1}. ${item}
</#list>
   (2)通过宏,给nested传值方式
   繁琐,麻烦而且是重复画轮子^_^
<#macro loop col>
	<#local max=col?size-1>
	<#list 0..max as idx>
	     <#nested col[idx],idx>
	</#list>
        <#-- 使用return指令 -->
        <#return>
        这句话不会打印
</#macro>
<#-- 调用 -->
<@loop col=master.managers;item,index>
	${index+1}. ${item}
</@loop>
<#-- 或者通过位置参数方式调用 -->
<@loop master.managers;item,index>
	${index+1}. ${item}
</@loop>
  • 自定义函数function
    下面是一个求和自定义函数的例子
<#--自定义函数-->
<#function sum nums...>
   <#local sum_v=0>
   <#list nums as num>
      <#local sum_v=sum_v+num>
   </#list>
   <#return sum_v>
</#function>
<br>-----------------------<br>
求和:${sum(1,23,39)}
<br>-----------------------<br>
 
分享到:
评论
1 楼 qiuq86 2013-04-08  
很有用,谢谢,看到了一些之前没用到过的技巧

相关推荐

    freemarker概述

    ### FreeMarker概述与核心知识点详解 #### 一、FreeMarker简介 FreeMarker是一个非常流行的开源模板引擎,主要用于根据模板和数据生成文本输出。它是由Java编写而成,因此可以在任何支持Java运行环境的地方运行。...

    freemarker语法完整版

    ### Freemarker语法完整版知识点详解 #### A. 概念 **1. Scalars(标量)** - **字符串**: 由单引号或双引号括起来的文本。 - **数字**: 直接使用数值。 - **日期**: 通常从数据模型中获取。 - **布尔值**: `...

    Spring配置Freemarker视图解析器,前台页面全部使用freemarker渲染

    在Spring框架中,Freemarker是一个常用的模板引擎,用于生成动态HTML或其他文本格式的输出。它允许开发者将业务逻辑与视图层分离,提供了一种灵活的方式来构建Web应用程序的前端。下面我们将深入探讨如何配置Spring...

    Servlet + Freemarker 入门练习

    Servlet 和 Freemarker 是两种在 Web 开发中常用的工具。Servlet 主要用于服务器端编程,处理 HTTP 请求并生成响应,而 Freemarker 是一个模板引擎,它允许开发者将逻辑和视图分离,使得页面呈现更加灵活。 Servlet...

    freemarker中文手册.pdf

    ### FreeMarker中文手册知识点概览 #### 一、FreeMarker简介 - **定位与功能**:FreeMarker是一款基于模板的通用工具,旨在帮助开发者利用模板生成各类文本输出,包括但不限于HTML网页、XML文档、RTF文件及Java源...

    Struts2 与Freemarker 的配置方法

    Struts2 和 Freemarker 的整合是企业级Java Web开发中常用的技术组合,它们结合使用能够实现灵活、高效的表现层设计。Struts2 是一个强大的MVC框架,而Freemarker则是一个模板引擎,用于生成动态内容。以下是关于...

    freemarker 中午手册

    ### Freemarker 中文手册知识点详解 #### 一、Freemarker 概述 - **定义与功能**:Freemarker 是一款用纯 Java 编写的模板引擎,它主要用于根据模板生成文本输出,如 HTML 网页、XML 文件、电子邮件等。其核心优势...

    FreeMarker中文参考手册

    ### FreeMarker中文参考手册知识点详解 #### 一、FreeMarker简介与快速入门 **FreeMarker** 是一个功能强大的模板引擎,主要用于将数据模型中的数据渲染到各种格式的文档中,如HTML、XML、纯文本等。它基于一个...

    Freemarker中List的应用

    在Freemarker中,`List`是一种非常常用的数据结构,它允许我们处理数组或集合类的数据。本篇文章将深入探讨`List`在Freemarker中的应用及其相关知识点。 首先,了解Freemarker的基本语法至关重要。在Freemarker模板...

    freemarker生成html

    其中一些常用标签包括: - `#foreach`:循环遍历集合或数组。 - `#if`:条件判断。 - `#set`:变量赋值。 - `#list`:处理列表。 - `#include`:包含其他模板文件。 #### 五、示例代码分析 以下是对给定代码片段的...

    freemarker与struts配置实例和dwr实例

    Freemarker、Struts2和DWR是Java Web开发中常用的三个组件,它们分别负责不同的职责,协同工作可以构建出高效、动态的Web应用程序。在这个实例中,我们将深入理解这三个技术,并通过具体配置来了解它们如何协同工作...

    FreeMarker模板语言API

    - `Map`:常用的数据模型,键值对形式,可以通过`ModelData`将Java对象转换为FreeMarker可识别的格式。 - `BeansWrapper`:用于包装Java对象,使其在FreeMarker中可用。 5. **异常处理** - `TemplateException`...

    FreeMarker_Manual_zh_CN

    ### FreeMarker知识点详解 #### 一、FreeMarker概述 **FreeMarker** 是一款用Java编写的强大且功能丰富的模板引擎,适用于多种应用场景,包括但不限于Web应用中的动态页面生成。其核心设计目标是易于使用,同时...

    freemarker-2.3.19教程

    ### Freemarker-2.3.19 教程知识点概览 #### FreeMarker 概述 - **定义**: FreeMarker 是一个用纯 Java 编写的模板引擎,它主要用于基于模板生成文本输出。 - **用途**: 主要设计用于生成 HTML Web 页面,尤其是在 ...

    freeMarker资料

    ### FreeMarker知识点详解 #### 一、FreeMarker概述 **FreeMarker**是一个开源的模板引擎,主要用于基于模板生成文本输出的通用工具。该工具使用纯Java编写,因此它非常适合集成到Java开发环境中。 ##### 主要...

    Xdoc jar,freemarker2.3.8jar

    在这种场景下,Xdoc和Freemarker是两种常用的库,它们提供了方便的API来帮助开发者实现这些功能。这两个库通常以jar包的形式提供,以便在Java项目中引入和使用。以下是关于Xdoc和Freemarker的详细知识: 1. **Xdoc*...

    freemarker笔记

    以上内容概述了Freemarker的基础知识,包括其主要数据类型、指令使用和表达式规则,这些构成了Freemarker模板语言的核心,帮助开发者生成动态内容。通过熟练掌握这些,你可以高效地构建基于Freemarker的模板系统,...

    freemarker

    以下是关于Freemarker的一些核心知识点和常见用法的详细解析: 1. **基本语法**: - `#set`:用于赋值,例如`#set($name = "张三")`。 - `${}`:用于输出变量,如`${name}`会输出"张三"。 - `#if`、`#else`、`#...

    Java freemarker 模板生成word动态表格

    Java FreeMarker 模板生成Word动态表格是一种在Java开发中常用的技术,用于生成基于模板的复杂文档,特别是当需要创建包含动态数据的Word表格时。FreeMarker是一个强大的模板引擎,它与Java代码分离,允许开发者使用...

Global site tag (gtag.js) - Google Analytics