`
Classicning
  • 浏览: 255783 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Freemarker 的常见控制结构写法

    博客分类:
  • Tech
阅读更多
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语句中的方法类似。
分享到:
评论

相关推荐

    FreeMarker通用的分页

    - **条件渲染**:通过`&lt;#if&gt;`结构控制当前页的特殊样式,使其区别于其他页码链接。 - **参数传递**:宏之间以及宏与外部调用者之间的参数传递是实现动态分页的关键,确保了代码的灵活性和可维护性。 ### 总结 在...

    freemarker 自定义freeMarker标签

    FreeMarker使用${...}表达式来插入变量,#{...}用于输出注释,以及、等控制结构进行条件判断和循环。然而,这些默认标签可能无法满足所有复杂的场景,因此自定义标签就显得尤为必要。 自定义FreeMarker标签通常涉及...

    freemarker初探 附 freemarker中文手册 与 struts2 checkboxlist的研究

    Freemarker是一个强大的模板引擎,常用于Web应用中的视图层渲染,与Struts2等MVC框架结合使用。在本篇文章中,我们将探讨Freemarker的基础知识,并结合Struts2中的checkboxlist进行研究。 首先,让我们理解...

    freemarker Demo 适用于freemarker初学

    Freemarker模板主要由文本和控制结构组成,如`&lt;#if&gt;`, `&lt;#foreach&gt;`, `&lt;#assign&gt;`等。例如,`&lt;#if user??&gt;`用来检查用户对象是否存在,`&lt;#foreach item in items&gt;`用于遍历列表,`&lt;#assign name="John"&gt;`用于赋值。...

    freemarker-2.3.23jar

    3. **控制结构**:Freemarker提供了丰富的控制结构,如条件语句(`&lt;#if&gt;`、`&lt;#else&gt;`、`&lt;#elseif&gt;`)、循环(`&lt;#foreach&gt;`)、以及异常处理(`&lt;#try&gt;`、`&lt;#catch&gt;`)等,使得模板具有一定的逻辑处理能力。...

    freemarker 源码、中文API、 freemarker Myeclipse 编辑器

    例如,Freemarker支持控制结构(如if、foreach)、变量表达式、函数调用等,这些都是构建动态页面的基础。同时,手册还会详细介绍如何配置和优化Freemarker以适应你的项目需求。 其次,`freemarker 插件 安装提示....

    freemarker-2.3.28.jar

    例如,`&lt;#if&gt;`、`&lt;#foreach&gt;`、`&lt;#assign&gt;`等是常见的控制结构,`${}`则用于插入变量值。 2. **数据模型绑定**: Freemarker的核心概念之一是数据模型,开发者将Java对象暴露给模板,模板通过这些对象来生成输出。...

    freemarker(FTL)常见语法大全

    ### Freemarker(FTL)常见语法详解 Freemarker是一种基于模板引擎技术的软件,用于生成文本输出。它被广泛应用于Web开发中,用来生成HTML页面或其他格式的文档。Freemarker使用简单直观的语法,使得开发者能够轻松...

    FreeMarker

    2. **控制结构**:FreeMarker 提供了类似于编程语言的控制结构,如`&lt;#if&gt;`、`&lt;#else&gt;`、`&lt;#foreach&gt;`等,用于条件判断和循环遍历。例如,你可以用 `&lt;#if user.isAdmin&gt;` 判断用户是否为管理员,或者用 `...

    shiro-freemarker权限控制标签

    Apache Shiro 和 Freemarker 的整合主要集中在权限控制方面,这对于构建安全、易维护的Web应用至关重要。Shiro 是一个强大的Java安全框架,提供身份验证、授权、加密和会话管理功能,而Freemarker则是一种常用的模板...

    FreeMarker_2.3.23 中文

    通过阅读手册,开发者可以掌握如何编写模板,如何将Java对象暴露给模板,以及如何利用FreeMarker的控制结构和内置函数来动态生成内容。同时,了解FreeMarker的性能优化技巧和最佳实践也非常重要,这有助于提高应用的...

    freemarker编辑插件

    在实际开发中,我们还应了解Freemarker的基本语法,如变量表达式、控制结构(if、else、foreach)、导入模板、宏定义等。同时,熟悉如何将Freemarker与后端数据模型绑定,以及如何在Spring MVC或其他Web框架中配置和...

    freemarker各种版本的jar包

    - 这个版本可能包含了一些基本的功能,如模板语言的语法,变量、表达式和控制结构。 - 它可能已经支持了数据模型绑定,允许开发者将Java对象的数据传递给模板进行渲染。 - 可能包括了基本的错误处理机制和调试...

    freemarker

    Freemarker的核心是`Configuration`类,它是用于配置和控制Freemarker的主要接口。在代码示例中,首先实例化了`Configuration`对象,这是使用Freemarker的第一步。通过设置`setClassForTemplateLoading`方法,指定了...

    通过freemarker模板 生成PDF

    它支持变量替换、控制结构(如if/else)和复杂的逻辑,使得开发者能以模板语言编写静态部分,而动态数据则由程序在运行时提供。Freemarker与MVC(Model-View-Controller)架构兼容,常与Spring等框架一起使用。 在...

    FreeMarker手册-Freemarker 2.3.18

    FreeMarker的核心概念是数据模型,它是由Java对象构成的结构,这些对象可以被模板引用。在模板中,你可以通过`.`操作符访问对象的属性,如`${user.name}`来获取用户对象的name属性。 3. **模板指令** FreeMarker...

    Freemarker 实例,Freemarker 实例

    - **模板(Templates)**:Freemarker的核心是模板文件,它定义了页面的布局和样式,包含变量和控制结构。 - **数据模型(Data Model)**:提供给模板的数据,通常由Java对象构成,包括单个对象、集合、Map等。 - **模板...

    eclipse的freemarker插件

    6. **集成开发环境**:与Eclipse的其他特性无缝集成,例如版本控制、调试器、构建工具等,为Freemarker开发提供一站式解决方案。 7. **版本更新**:插件会定期更新,以适配最新的Freemarker版本和Eclipse平台,保持...

    freemarker 2.3.10架包

    1. **模板语言**:Freemarker的模板语言是一种简单的、非侵入式的标记语言,允许开发者在模板中嵌入变量和控制结构。例如,`&lt;#if&gt;`、`&lt;#foreach&gt;`等指令用于条件判断和循环,`${}`用于插入变量值。 2. **数据驱动**...

    freemarker-2.3.31-API文档-中文版.zip

    赠送jar包:freemarker-2.3.31.jar; 赠送原API文档:freemarker-2.3.31-javadoc.jar; 赠送源代码:freemarker-2.3.31-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

Global site tag (gtag.js) - Google Analytics