freemarker(FTL)常见语法大全

news/2024/7/6 1:19:28 标签: freemarker

FreeMarker的插值有如下两种类型:

1,通用插值${expr};

2,数字格式化插值:#{expr}或#{expr;format}

通用插值:

${book.name?if_exists } //用于判断如果存在,就输出这个值

${book.name?default(‘xxx’)} //默认值xxx

${book.name!”xxx”} //默认值xxx

${book.date?string(‘yyyy-MM-dd’)} //日期格式

${book?string.number} 20 //三种不同的数字格式

{book?string.currency}-- <#--20.00 –>

${book?string.percent}— <#– 20% –>

<#assign foo=ture /> //声明变量,插入布尔值进行显示

${foo?string(“yes”,”no”)} <#– yes –>

大小比较符号使用需要注意:

(xml的原因),可以用于比较数字和日期

使用lt、lte、gt和gte来替代<、<=、>和>= 也可以使用括号<#if (x>y)>

内置函数: 调用区别于属性的访问,使用?代替.

常见的一些内置函数

对于字符串

html-对字符串进行HTML编码

cap_first-使字符串第一个字母大写

lower_case-将字符串转换成小写

trim-去掉字符串前后的空白字符

对于Sequences(序列)

size-获得序列中元素的数目

对于数字

int-取得数字的整数部分(如-1.9?int的结果是-1)

对于集合

可以使用数组的方式,使用下标索引进行访问

逻辑判断:

if:

<#if condition>…

<#elseif condition2>…

<#elseif condition3>……

<#else>…

Boolean类型的空值判断:

空值判断可以写成<#if book.name?? > //注意${}为变量的渲染显示,而<>为定义等操作符的定义

switch:

<#switch value>

<#case refValue1>

<#break>

<#case refValue2>

<#break>

<#case refValueN>

<#break>

<#default>

{c.a;m0} 区别于${}

这个例子是用于输出数字的格式化,保留小数的位数,详细如下

数字格式化插值可采用#{expr;format}形式来格式化数字,其中format可以是:

mX:小数部分最小X位

MX:小数部分最大X位

在定义字符串的时候,可以使用”或者”“,对特殊字符,需要使用\进行转义

如果存在大量特殊字符,可以使用${r”…”}进行过滤

{r"{foo}”}

${r”C:\foo\bar”}

Map对象的key和value都是表达式,但是key必须是字符串,可以混合使用.和[“”]访问

book.author[“name”] //混合使用点语法和方括号语法

为了处理缺失变量,FreeMarker提供了两个运算符: 用于防止对象不存在而导致的异常

!:指定缺失变量的默认值

??:判断某个变量是否存在,返回boolean值

noparse指令指定FreeMarker不处理该指定里包含的内容,该指令的语法格式如下:

<#noparse>…


http://www.niftyadmin.cn/n/1833224.html

相关文章

2012 jinhua

2012 jinhua I题&#xff1a;签到题&#xff0c;没什么意思。 #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstdlib>using namespace std;const int maxn1000100;int n; int a[maxn];int main() {whil…

ORCLE 如何停止一个JOB【HOW TO STOP A JOB IN THE ORACLE】

为同事解决一个因为网络连接情况不佳时&#xff0c;执行一个超长时间的SQL插入操作。 既然网络状况不好&#xff0c;就选择了使用一次性使用JOB来完成该插入操作。在JOB执行一段时间后&#xff0c;我发现被插入表有些问题&#xff08;惭愧&#xff0c;当时也没有先检查检查…

贪心算法(求最优解)

小编开始自学&#xff0c;开始理解与学习算法&#xff0c;如果内容有误&#xff0c;欢迎大家评论&#xff0c;互动。 贪心算法&#xff08;Gre小编开始自学&#xff0c;开始理解与学习算法&#xff0c;如果内容有误&#xff0c;欢迎大家评论&#xff0c;互动。 贪心算法&#x…

算法入门笔记(一,介绍,递归)

小编认为算法是一个程序员必不可少的核心&#xff0c;所以从今天开始练习与加深学习。话不多说&#xff0c;开始学习。 时间复杂度&#xff1a;用来评估算法运行速率的式子。 一般情况下&#xff1a;时间复杂度高比复杂度底高&#xff08;通常条件一样情况下&#xff09; prin…

Spring Boot 系列(八)@ControllerAdvice 拦截异常并统一处理

Spring Boot 系列&#xff08;八&#xff09;ControllerAdvice 拦截异常并统一处理 在spring 3.2中&#xff0c;新增了ControllerAdvice 注解&#xff0c;可以用于定义ExceptionHandler、InitBinder、ModelAttribute&#xff0c;并应用到所有RequestMapping中。参考&#xff1…

java新手笔记25 日期格式化

1.系统时间 package com.yfs.javase;import java.sql.Time; import java.sql.Timestamp; import java.util.Calendar; import java.util.Date;public class DateDemo1 {/*** 时间表示法*/public static void main(String[] args) {// long表示法long now System.currentTimeMi…

Quick Outline

为什么80%的码农都做不了架构师&#xff1f;>>> 快速大纲 作为一个developer&#xff0c;我们必须得学会一些快捷的方式&#xff0c;帮助自己快速的达到相应的目的。比如&#xff0c;我查看一个类&#xff0c;这个类定义了许多的方法&#xff0c;我不想去看outlin…

算法入门笔记(二,查找与排序)

继续学习算法&#xff0c;如果笔记对你有帮助&#xff0c;不要忘了点赞&#xff0c;如果有问题&#xff1f;希望大家批评指出。谢谢大家。 列表查找&#xff1a; 输入&#xff1a;列表与带查找元素 输出&#xff1a;元素下标&#xff08;未找到元素时一般返回None与-1&#xff…