ftl常用数值格式化

本文介绍了Freemarker中常见的值格式化方法,如价格格式化、货币、百分比显示,以及if-else条件判断、时间戳和日期转换。还涵盖了列表迭代和空值处理技巧,以及字符串操作函数的使用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 freemarker常用的值格式化方法:

1、${price?string('0.00')}

对price进行格式化,小数点后不足2位用0补足。

比如:price=1

输出:1.00

2、${price?string('#.##')}

对price进行格式化,小数点后多余2位只保留2位,少于2位显示实际位数。

比如:price=1.234

输出:1.23

3、${price?string.currency}

对price进行格式化,显示为货币格式。

比如:price=1

输出:¥1.00

4、${price?string.percent}

对price进行格式化,显示为百分比。

比如:price=1

输出:100%

1.if-else常用

<#if signStatus??> //如果signStatus值存在
   <#if signStatus=='2'>是<#else>否</#if> <#else> 
  否
</#if>

2.时间格式化

时间戳转日期 

  ${time?number_to_datetime}

  ${time?number*1000} 时间戳乘1000

日期格式化

  ${dateTime?string('yyyy-MM-dd hh:mm:ss')}   格式化为 2020-11-12 15:05:29

  ${dateTime?string('yyyy-MM-dd ')}   格式化为 2020-11-12

3.数值格式化

数值如果有小数保留两位小数,否则补0两位,例如128.81, 688则为 688.00

${((totalInvoice.amount)!0)?string('###,##0.00')}
另外,
 1 ${num?string('0.00')}
 2 如果小数点后不足两位,用 0 代替
 3 
 4 ${num?string('#.##')}
 5 如果小数点后多余两位,就只保留两位,否则输出实际值
 6 输出为:1239765.46
 7 
 8 ${num?string(',###.00')}
 9 输出为:1,239,765.46
10 整数部分每三位用 , 分割,并且保证小数点后保留两位,不足用 0 代替
11 
12 ${num?string(',###.##')}
13 输出为:1,239,765.46
14 整数部分每三位用 , 分割,并且小数点后多余两位就只保留两位,不足两位就取实际位数,可以不不包含小数点
15 
16 ${num?string('000.00')}
17 输出为:012.70
18 整数部分如果不足三位(000),前面用0补齐,否则取实际的整数位
19 
20 ${num?string('###.00')}
21 等价于
22 ${num?string('#.00')}
23 输出为:12.70   
参考https://blog.csdn.net/qq_32534855/article/details/67631788

4.list迭代

1 <#list 0..(bigTypeList!?size-1) as i>
2    <#if bigTypeList[i].code==settleCheckBillVO.bigType>
3         ${bigTypeList[i].name}
4    </#if>
5  </#list>

5.数值为空导致的报错的处理方式

添加以下红色的部分,当为对象时需要加括号(一些可能为空的数据需要这么处理)
${saleUnifiedIdentityCode!""}
${((totalInvoice.amount)!0)?string('###,##0.00')}

 1 <#if receiptVOList?size != 0>
 2         <div style="font-size: 16px;
 3     font-weight: bold;padding:10px 0">匹配通过收据明细 <span style="margin-left: 20px">共${(receiptVOList)?size!0}张</span></div>
 4         <table width="100%" border="0" cellspacing="0" cellpadding="0" class="tb">
 5             <tr>
 6                 <td width="16%" class="tl" style="border-width: 1px 1px 1px 1px">发票类型</td>
 7                 <td width="10%" class="tc" style="border-width: 1px 1px 1px 0">开票日期<i></i></td>
 8                 <td width="12%" class="tc" style="border-width: 1px 1px 1px 0">收据编号<i></i></td>
 9                 <td width="12%" class="tc" style="border-width: 1px 1px 1px 0">含税金额<i></i></td>
10                 <td width="26%" class="tc" style="border-width: 1px 1px 1px 0">备注<i></i></td>
11             </tr>
12 
13             <#if receiptVOList?size != 0>
14                 <#list 0..(receiptVOList!?size-1) as i>
15                     <tr class="<#if i%2==0>space</#if>"
16                         style=" <#if (receiptVOList[i].totalAmount<0)>color: red</#if>">
17                         <td class="tl" style="border-width: 0px 1px 1px 1px"><p>收据</p></td>
18                         <td class="tc" style="border-width: 0px 1px 1px 0px">
19                             <p>${(receiptVOList[i].openInvoiceTime?number_to_datetime)?string('yyyy-MM-dd')!}</p></td>
20                         <td class="tc" style="border-width: 0px 1px 1px 0px"><p>${receiptVOList[i].billNo!}</p></td>
21                         <td class="tc" style="border-width: 0px 1px 1px 0px">
22                             <p>${((receiptVOList[i].totalAmount)!0)?string('###,##0.00')}</p></td>
23                         <td class="tc" style="border-width: 0px 1px 1px 0px"><p>${(receiptVOList[i].remark)!}</p></td>
24                     </tr>
25                 </#list>
26             </#if>
27         </table>
28     </#if>

6.字符串操作函数(参考下面,即可大概清楚ftl中函数如何使用)

${“strabg”?replace(“ab”,”in”)} 结果为string  
${“string”?contains(“ing”)?string} 结果为true  
注意:布尔值必须转换为字符串才能输出  
${“string”?index_of(“in”) 结果为3 
${“string”?index_of(“ab”) 结果为-1 
length返回字符串的长度 ${“string”?length}结果为6 
lower_case将字符串转为小写  
${“STRING”?lower_case}à结果为string  
upper_case将字符串转为大写  
${“string”?upper_case}à结果为STRING  
ends_with 判断某个字符串是否由某个子串结尾,返回布尔值。  
${“string”?ends_with(“ing”)?string} 返回结果为true  

<think>好的,用户问的是“ftl是什么文件”。我需要先确定这个缩写可能的含义,因为不同的领域可能有不同的解释。首先,常见的FTL扩展名可能有几种情况。比如在IT或软件开发领域,Freemarker模板语言(FreeMarker Template Language)的文件通常使用.ftl扩展名。另外,在游戏或图形领域,可能有其他含义,比如Faster Than Light的缩写,但作为文件类型,可能性较低。此外,是否有其他专业领域使用这个扩展名呢?比如3D建模或特定软件的项目文件? 首先,我应该考虑最常见的用法。Freemarker是一个广泛使用的模板引擎,尤其在Java生态系统中,用于生成HTML、电子邮件、配置文件等。所以用户很可能是在开发过程中遇到了.ftl文件,或者需要了解其用途。因此,首先应该介绍Freemarker模板文件的基本信息,包括它的结构、用途和语法特点。 接下来,需要确认是否有其他可能的解释。比如,FTL可能代表其他技术术语,比如“Fault Tolerance Layer”或者其他缩写,但根据常见的文件扩展名,Freemarker模板文件是最可能的。因此,在回答中应该主要围绕这一点展开,同时也可以简要提到其他可能性,但需要说明不常见,以避免误导用户。 另外,用户可能是在处理某个项目时遇到了.ftl文件,需要知道如何打开或编辑它。因此,应该提供相关的工具信息,例如常用的文本编辑器(如VS Code、IntelliJ IDEA)或专门的模板编辑器,并说明这些文件通常是纯文本,可以用任何编辑器查看。 还要注意回答的结构,按照用户的要求,结构清晰,分点说明。首先给出核心定义,然后分点详细说明用途、特点、示例和工具。最后,如果有其他可能的解释,可以简要提及,但需要强调最常见的情况。 需要确保使用正确的中文术语,避免技术术语翻译错误。例如,FreeMarker应保留原名,但可以适当翻译解释。同时,检查是否有语法错误,保持回答流畅自然。 总结回答的结构应该是:首先直接回答FTL文件是什么,然后分用途、语法特点、示例和工具进行详细说明,最后提到其他可能的含义但较少见。这样既符合用户的结构要求,也覆盖了可能的相关信息。</think>FTL文件是一种**模板文件**,通常与**FreeMarker模板引擎**(FreeMarker Template Language)相关联。以下是详细说明: --- ### 一、核心定义 - **FTL** = **FreeMarker Template Language** 属于Java生态中广泛使用的模板引擎文件,扩展名为`.ftl`,用于动态生成文本输出(如HTML、XML、代码、配置文件等)。 --- ### 二、主要用途 1. **Web开发** 生成HTML页面(结合Spring MVC等框架)。 2. **代码生成** 自动化创建代码文件(如Java类、SQL脚本)。 3. **数据格式化** 将JSON/XML数据转换为特定格式的文本。 4. **邮件模板** 动态生成邮件内容。 --- ### 三、语法特点 1. **变量替换** 用`${variable}`插入动态值。 ```ftl <h1>欢迎, ${userName}!</h1> ``` 2. **逻辑控制** 支持条件判断、循环等。 ```ftl <#if score >= 60> <p>及格</p> <#else> <p>不及格</p> </#if> ``` 3. **宏定义** 可复用代码块(类似函数)。 ```ftl <#macro header title> <header><h1>${title}</h1></header> </#macro> ``` --- ### 四、文件示例 ```ftl <!DOCTYPE html> <html> <head> <title>${pageTitle}</title> </head> <body> <#list items as item> <div>${item.name}: ¥${item.price}</div> </#list> </body> </html> ``` --- ### 五、编辑工具 - **通用编辑器**: VS Code、IntelliJ IDEA(需插件支持语法高亮) - **专用工具**: FreeMarker IDE插件(Eclipse) --- ### 六、其他可能性(较少见) - **游戏开发**: 少数引擎的配置文件。 - **硬件领域**: 特定设备的固件描述文件。 若您遇到`.ftl`文件,建议结合上下文(如项目类型、文件内容)判断其具体用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值