Freemarker是很好用的模板引擎。今天被一个小小的if...else...控制结构的写法困扰了很久,原来在freemaker里这个控制结构和JSTL还不一样,不了解的话还真是个问题。虽然freemarker的tag用的也是类似xml的尖括号,但是它并不遵守每个标签都要封口的规则。
选择结构if...else...
<#if condition>
...
<#elseif condition2>
...
<#elseif condition3>
...
<#else>
...
</#if>
只有一个if的情况:
<#if x = 1>
x is 1
</#if>
包含elseif的情况:
<#if x = 1>
x is 1
<#elseif x = 2>
x is 2
<#elseif x = 3>
x is 3
</#if>
包含else的用法:
<#if x = 1>
x is 1
<#elseif x = 2>
x is 2
<#elseif x = 3>
x is 3
<#elseif x = 4>
x is 4
<#else>
x is not 1 nor 2 nor 3 nor 4
</#if>
switch...case...default...
<#switch value>
<#case refValue1>
...
<#break>
<#case refValue2>
...
<#break>
<#case refValueN>
...
<#break>
<#default>
...
</#switch>
类似Java的普通用法:
<#switch being.size>
<#case "small">
This will be processed if it is small
<#break>
<#case "medium">
This will be processed if it is medium
<#break>
<#case "large">
This will be processed if it is large
<#break>
<#default>
This will be processed if it is neither
</#switch>
不使用break的方法,即在case中进行判断:
<#switch x>
<#case x = 1>
1
<#case x = 2>
2
<#default>
d
</#switch>
循环迭代结构<#list sequence as item>
...
</#list>
迭代的同时会生成两个变量:
item_index,
item_has_next,意如其名:
<#assign seq = ["winter", "spring", "summer", "autumn"]>
<#list seq as x>
${x_index + 1}. ${x}<#if x_has_next>,</#if>
</#list>
也可以用break跳出循环,用法和switch语句中的方法类似。
分享到:
相关推荐
Apache Shiro 和 Freemarker 的整合主要集中在权限控制方面,这对于构建安全、易维护的Web应用至关重要。Shiro 是一个强大的Java安全框架,提供身份验证、授权、加密和会话管理功能,而Freemarker则是一种常用的模板...
FreeMarker使用${...}表达式来插入变量,#{...}用于输出注释,以及、等控制结构进行条件判断和循环。然而,这些默认标签可能无法满足所有复杂的场景,因此自定义标签就显得尤为必要。 自定义FreeMarker标签通常涉及...
Freemarker是一个强大的模板引擎,常用于Web应用中的视图层渲染,与Struts2等MVC框架结合使用。在本篇文章中,我们将探讨Freemarker的基础知识,并结合Struts2中的checkboxlist进行研究。 首先,让我们理解...
Freemarker模板主要由文本和控制结构组成,如`<#if>`, `<#foreach>`, `<#assign>`等。例如,`<#if user??>`用来检查用户对象是否存在,`<#foreach item in items>`用于遍历列表,`<#assign name="John">`用于赋值。...
- **条件渲染**:通过`<#if>`结构控制当前页的特殊样式,使其区别于其他页码链接。 - **参数传递**:宏之间以及宏与外部调用者之间的参数传递是实现动态分页的关键,确保了代码的灵活性和可维护性。 ### 总结 在...
例如,Freemarker支持控制结构(如if、foreach)、变量表达式、函数调用等,这些都是构建动态页面的基础。同时,手册还会详细介绍如何配置和优化Freemarker以适应你的项目需求。 其次,`freemarker 插件 安装提示....
3. **控制结构**:Freemarker提供了丰富的控制结构,如条件语句(`<#if>`、`<#else>`、`<#elseif>`)、循环(`<#foreach>`)、以及异常处理(`<#try>`、`<#catch>`)等,使得模板具有一定的逻辑处理能力。...
例如,`<#if>`、`<#foreach>`、`<#assign>`等是常见的控制结构,`${}`则用于插入变量值。 2. **数据模型绑定**: Freemarker的核心概念之一是数据模型,开发者将Java对象暴露给模板,模板通过这些对象来生成输出。...
2. **控制结构**:FreeMarker 提供了类似于编程语言的控制结构,如`<#if>`、`<#else>`、`<#foreach>`等,用于条件判断和循环遍历。例如,你可以用 `<#if user.isAdmin>` 判断用户是否为管理员,或者用 `...
### Freemarker(FTL)常见语法详解 Freemarker是一种基于模板引擎技术的软件,用于生成文本输出。它被广泛应用于Web开发中,用来生成HTML页面或其他格式的文档。Freemarker使用简单直观的语法,使得开发者能够轻松...
在实际开发中,我们还应了解Freemarker的基本语法,如变量表达式、控制结构(if、else、foreach)、导入模板、宏定义等。同时,熟悉如何将Freemarker与后端数据模型绑定,以及如何在Spring MVC或其他Web框架中配置和...
2. **代码提示**:在编写`.ftl`文件时,插件会提供自动补全功能,帮助快速输入常见的Freemarker指令和变量,减少手动输入的时间。 3. **错误检查**:插件会在编写过程中实时检查代码,标出可能存在的语法错误或逻辑...
通过阅读手册,开发者可以掌握如何编写模板,如何将Java对象暴露给模板,以及如何利用FreeMarker的控制结构和内置函数来动态生成内容。同时,了解FreeMarker的性能优化技巧和最佳实践也非常重要,这有助于提高应用的...
Freemarker的核心是`Configuration`类,它是用于配置和控制Freemarker的主要接口。在代码示例中,首先实例化了`Configuration`对象,这是使用Freemarker的第一步。通过设置`setClassForTemplateLoading`方法,指定了...
- 这个版本可能包含了一些基本的功能,如模板语言的语法,变量、表达式和控制结构。 - 它可能已经支持了数据模型绑定,允许开发者将Java对象的数据传递给模板进行渲染。 - 可能包括了基本的错误处理机制和调试...
它支持变量替换、控制结构(如if/else)和复杂的逻辑,使得开发者能以模板语言编写静态部分,而动态数据则由程序在运行时提供。Freemarker与MVC(Model-View-Controller)架构兼容,常与Spring等框架一起使用。 在...
FreeMarker的核心概念是数据模型,它是由Java对象构成的结构,这些对象可以被模板引用。在模板中,你可以通过`.`操作符访问对象的属性,如`${user.name}`来获取用户对象的name属性。 3. **模板指令** FreeMarker...
- **模板(Templates)**:Freemarker的核心是模板文件,它定义了页面的布局和样式,包含变量和控制结构。 - **数据模型(Data Model)**:提供给模板的数据,通常由Java对象构成,包括单个对象、集合、Map等。 - **模板...
6. **集成开发环境**:与Eclipse的其他特性无缝集成,例如版本控制、调试器、构建工具等,为Freemarker开发提供一站式解决方案。 7. **版本更新**:插件会定期更新,以适配最新的Freemarker版本和Eclipse平台,保持...
1. **模板语言**:Freemarker的模板语言是一种简单的、非侵入式的标记语言,允许开发者在模板中嵌入变量和控制结构。例如,`<#if>`、`<#foreach>`等指令用于条件判断和循环,`${}`用于插入变量值。 2. **数据驱动**...