FreeMarker入门二

本文详细介绍了FreeMarker模板语言中的命名空间、字符串、数字、日期、布尔值、序列、哈希表内建函数的使用,以及数据模型的创建、模板加载、异常处理和其他配置选项。通过示例展示了如何在FreeMarker中操作和处理各种数据类型,帮助读者深入理解FreeMarker的语法和功能。
摘要由CSDN通过智能技术生成

FreeMarker入门二

命名空间

在多个组织或者多个个人编写自定义指令的时候,命名可能会引起冲突。所以使用命名空间避免命名冲突

如下,有个名为Hello.ftl的模板文件,其中自定义了一个指令

<#macro sayHello name>
    Hello, ${name}
</#macro>

现在在另一个模板文件中使用这个自定义的指定,原来我们知道可以通过include引入进来,但这样做并不好。

我们想把它划分在一个命名空间中,这样可以与同命名的指令区分开来,可以使用import指令,如:

<#import "Hello.ftl" as Hello>

"Hello.ftl"导入,命名空间为Hello,所以使用sayHello指令如下:

<@Hello.sayHello name="小明" />

除了可以调用到自定义的指令外,其中的变量也是可以调用到的

<#-- Hello.ftl-->
<#assign num=10>

.......
<#--namespace.ftl-->
${Hello.num}

偶尔想要在一个被包含的命名空间上创建或替换一个变量。 那么可以使用 assign 指令

<#import "/lib/my_test.ftl" as my>
${
   my.mail}
<#assign mail="jsmith@other.com" in my>
${
   my.mail}

字符串函数

substring (已废弃)

exp?substring(from, toExclusive)
  • from: 第一个字符的索引
  • toExclusive:子串最后一个字符之后的字符位置索引(不包括此字符)

ends_with
ends_with返回是否这个字符串以参数中指定的子串结尾,返回类型是布尔型

${
   "ahead"?ends_with("head")?c}

index_of
index_of返回第一次字符串中出现子串时的索引位置。

${
   "abcabc"?index_of("bc")}

如上结果为1

length
length字符串中字符的数量

${
   "abcabc"?length}

如上结果为6

left_pad
left_pad在字符串的开始插入空白, 直到整个串的长度达到参数指定的值
如果字符串的长度达到指定数值或者比指定的长度还长, 那么就什么都不做了

[${
   ""?left_pad(5)}]<#-- [     ] -->
[${
   "a"?left_pad(5)}]<#-- [    a] -->

如果使用了两个参数,那么第一个参数表示的含义和你使用一个参数时的相同, 第二个参数指定用什么东西来代替空白字符。比如:

[${
   "ab"?left_pad(5, "-")}]<#-- [---ab] -->

contains
contains是否包含

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值