FreeMarker的知识点

 <ul>
<#list animals as being>
  <li>${being.name} for ${being.price} Euros
  <#if user == "Big Joe">
     (except for you)
</#list> <#-- WRONG! The "if" has to be closed first. -->
</#if>
</ul>

==============

自定义指令可以使用 macro 指令来定义,这是模板设计者所关心的内容。

 宏是有一个变量名的模板片段。你可以在模板中使用宏作为自定义指令,这样就能进行
重复性的工作。例如,创建一个宏变量来打印大号的”Hello Joe!”。 
 
<#macro greet>
  <font size="+2">Hello Joe!</font>
</#macro> 
 
macro 指令自身不打印任何内容,它只是用来创建宏变量,所以就会有一个名为
greet 的变量。在<#macro greet>和</#macro>之间的内容(称为宏定义体)当
使用它作为指令时将会被执行。你可以在 FTL 标记中通过@代替#来使用自定义指令。使用
变量名作为指令名。而且,自定义指令的结束标记也是需要的。那么,就可以这样来使用
greet 宏了: 
<@greet></@greet>

 

  宏能做的事情还有很多,因为在<#macro ...>和</#macro>之间的东西是模板
片段,也就是说它可以包含插值(${...})和 FTL 标签(如<#if  ...>...</#if>) 。
  注意:
  程序员通常将使用<@...>,这称为宏调用。

 

  我们来改进 greet 宏使之可以使用任意的名字,而不仅仅是”Joe”。为了实现这个目
的,就要使用到参数。在macro 指令中,宏名称的后面位置是用来定义变量的。这里我们
仅在 greet 宏中定义一个变量,person: 
 <#macro greet person>
  <font size="+2">Hello ${person}!</font>
</#macro>
 
  那么就可以这样来使用这个宏: 
<@greet person="Fred"/> and <@greet person="Batman"/>

=======================

下面的这些名称不能在非方括号语法中被用作顶层变量(比如 vars["in"]),因为
这是 FTL 中的关键字。
true:布尔值“true” 
false:布尔值“false”
gt:比较运算符“大于”
gte:比较运算符“大于或等于” 
lt:比较运算符“小于”
lte:比较运算符“小于或等于”
as:由少数指令使用 
in:由少数指令使用
using:由少数指令使用

========================

以在变量名后面通过放置??来询问 FreeMarker 一个变量是否存在。将它和 if
指令合并,那么如果 user 变量不存在的话将会忽略整个问候代码段:

<#if user??><h1>Welcome ${user}!</h1></#if> 

========================

  通常来说,FreeMarker 不会自动将字符串转换为数字,反之会自动进行。
  有时我们只想获取计算结果的整数部分,这可以使用内建函数 int 来解决。(关于内
建函数后续章节会来解释)

${(x/2)?int}
${1.1?int}
${1.999?int}
${-1.1?int}
${-1.999?int}

  仍然假设 x 的值是 5,那么将会输出: 
2
1
1
-1
-1

===============================

内建函数
  正如其名,内建函数提供始终可用的内置功能。内建函数以?形式提供变量的不同形式
或者其他信息。使用内建函数的语法和访问哈希表子变量的语法很像,除了使用?号来代替
点,其他的都一样
。例如得到字符串的大写形式:user?upper_case。
  在参考文档中可以查到所有内建函数的资料。现在,我们只需了解一些重要的内建函数
就行了。
  字符串使用的内建函数:
  html:  字符串中所有的特殊 HTML 字符都需要用实体引用来代替(比如<代
替&lt;) 。
  cap_first:字符串的第一个字母变为大写形式
  lower_case:字符串的小写形式
  upper_case:字符串的大写形式
  trim:去掉字符串首尾的空格
  序列使用的内建函数:
  size:序列中元素的个数
  数字使用的内建函数:
  int:数字的整数部分(比如-1.9?int 就是-1)
示例


  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FreeMarker是一个用于生成HTML Web页面的模板引擎。它被设计用于将视图从业务逻辑中分离,通过模板来生成页面并展示数据。虽然FreeMarker具有一些编程能力,但通常由Java程序准备要显示的数据,然后由FreeMarker生成页面。它不是一个Web应用框架,而是适合作为Web应用框架的一个组件。FreeMarker与容器无关,可以应用于非Web应用程序环境。它更适合作为Model2框架(如Struts)的视图组件,也可以在模板中使用JSP标记库。FreeMarker具有强大的模板语言,支持常用的指令、循环结构、变量定义和复杂表达式等。它还提供了通用数据模型,可以方便地处理各种数据。\[2\] 在使用FreeMarker时,可以在webapp目录下创建template文件夹,并在其中创建模板文件。模板文件使用HTML标签和FreeMarker注释语法来定义页面结构和逻辑。可以通过${}语法来引用数据并在页面中展示。\[3\] 要启动使用FreeMarker的项目,需要在项目的依赖中添加FreeMarker的相关配置。可以在pom.xml文件中添加如下依赖配置: ```xml <dependency> <groupId>org.FreeMarker</groupId> <artifactId>FreeMarker</artifactId> <version>2.3.29</version> </dependency> ``` 这样就可以在项目中使用FreeMarker来生成页面了。\[1\] #### 引用[.reference_title] - *1* [FreeMarker简介及使用示例](https://blog.csdn.net/qq_39326472/article/details/131264082)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [FreeMarker详细介绍](https://blog.csdn.net/weixin_44454512/article/details/109877418)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值