Freemarker基础语法详解

5星 · 超过95%的资源 需积分: 2 51 下载量 53 浏览量 更新于2024-11-03 收藏 578KB DOC 举报
"FreeMarker教程" FreeMarker是一个强大的模板引擎,常用于Java应用中的视图层,它将数据模型与HTML、XML等展示模板分离,实现了动态内容的生成。本教程将详细介绍FreeMarker的基本语法和核心概念。 1. 基本语法 FreeMarker的模板由文本和指令组成。所有FreeMarker的指令都包含在`<#>`和`</#>`之间,这些指令不会被原样输出。例如,`<#if>`、`<#list>`用于条件判断和循环遍历。 2. 指令与函数 - `<#if condition>`、`<#elseif condition>`、`<#else>`构成条件判断结构,根据条件执行不同的代码块。 - `<#list hash_or_seq as var>`用于遍历哈希表或集合(在FreeMarker中称为sequence)的每个元素,`var`是遍历过程中使用的变量。 - `<#macro macro_name param1 param2>`定义宏,宏可以理解为可重用的模板片段,`<#nested param>`用于处理宏内部的嵌套内容。 - `<#function name param1 param2>`定义函数,函数可以有返回值,通过`<#return val>`返回。 3. 内置操作与转换函数 - `var?member_function()`是FreeMarker的内置函数,如`?upper_case`将变量转换为大写。这些函数可以直接作用于变量,类似于`member_function(var)`。 - `stringA[M..N]`用于截取字符串的子串,类似于Java的`substring()`方法。 - `{key: value, key2: value2}`直接定义一个哈希表。 - `[item0, item1, item2]`直接创建一个序列。 - `hash0[key0]`访问哈希表中键为`key0`的元素。 - `seq0[5]`获取序列中索引为5的元素。 4. 宏与函数调用 - `<@function1 param0 param1/>`调用名为`function1`的函数,传入参数`param0`和`param1`。 - `<@macro0 param0 param1; nest_param0 nest_param1>nest_body</@macro>`调用宏`macro0`,同时处理宏内的嵌套参数。 5. 变量定义与输出 - `<#assign var = value>`用于定义变量并初始化。 - `<#local var = value>`在宏或函数内部定义局部变量并初始化。 - `<#global var = value>`定义全局变量并初始化。 - `${var}`用于输出变量的值,会根据变量类型自动转换。 6. 处理XML节点 - `<#visit xml_node>`调用宏匹配`xml_node`本身及其子节点。 - `<#recurse xml_node>`仅处理`xml_node`的子节点。 7. 模板执行 FreeMarker模板在运行时结合数据模型进行解析,生成最终的输出。它能够灵活地处理各种数据结构,使得开发者可以专注于业务逻辑,而不用关心展示细节。 FreeMarker的灵活性和强大的功能使其成为Java Web开发中常用的模板引擎。通过深入学习和实践,你可以利用它构建出高效、易于维护的视图层。