ftl数据类型转换以及list遍历的使用

本文介绍Freemarker模板语言中的数据类型转换方法,包括如何将字符串转换为数字等,并详细解释了列表的遍历技巧,适用于处理复杂的嵌套数据结构。

  ftl文件是无法对数据类型不同的数据进行比较的,有时候数据库存放的数字是string 类型,就需要使用ftl的类型转换,转换方式比较简单,如下:

Ftl变量转换代码
      ?number转为数字  
      ?c转为字符串  
      ?string转为字符串  
      ?currency(货币)  
     ?percent(百分比)  

比如

170747_DtR2_2652412.png

在一个变量后面使用如上代码就完成了数据类型的转换。

 

ftl对list文件的遍历

170918_6Ltm_2652412.png

如上后台页面查出一个list集合,直接放到mode中即可,此时只要在ftl页面遍历即可,最简单的遍历方式就如下:

171716_QVmy_2652412.png

如果list遍历稍微复杂点,比如list中还有list 需要遍历,这种情况下一般都是数据之间有联系的,需要加入if 来进行判断,比如下面

170548_N9Kq_2652412.png

遍历完后使用if 来判断,像级联查询一样,如果两个list中某个数据 是一样的(比如A表某个字段是是B表的外键,此时必然有一个数据是一致的),如果是一致就遍历出来(此时就不会出现所有数据一次全被遍历的情况)

还有if 的使用比较简单

<#if 这里写条件>如果成立,执行里面的</#if>

稍微复杂点的,

<#if 条件>

        成立执行下面的语句

        <#elseif 条件>

        成立执行下面的语句

        <#elseif 条件 >

        成立执行下面的语句

        <#elseif 条件 >

        成立执行下面的语句

        <#else >  <#--这里不需要写条件-->

        如果都没有成立的条件,则执行这里

</#if>

转载于:https://my.oschina.net/sprouting/blog/682071

<think>嗯,用户想知道如何在FreeMarker模板中遍历字符串数组。首先,我需要回忆一下FreeMarker的语法和相关文档。根据引用[3]和引用[5],FreeMarker使用类似${variable}的语法来引用变量,而遍历列表通常使用<#list>标签。用户提到的字符串数组应该属于sequence类型,这在引用[4]中提到过。 我记得在FreeMarker中,遍历数组或列表是通过<#list sequence as item>...<#/list>结构实现的。例如,如果有一个数组叫strArr,那么遍历每个元素应该用<#list strArr as str>,然后通过${str}显示每个元素。同时,如果需要索引,可以用别名_index,如引用[5]所说,比如str_index来获取当前循环的索引值。 用户可能需要示例代码,所以我得准备一个具体的例子。比如数组["apple", "banana", "cherry"],在模板中遍历并显示每个元素和索引。还要注意处理空数组的情况,可以用<#else>来提示,避免错误。此外,如果用户想直接在模板中定义数组,可能需要使用?split或者内建函数来转换字符串为数组,但通常数据是从后端传入的,所以示例中应该展示如何遍历传入的数组。 另外,要确保语法正确,比如标签的正确闭合,变量引用的格式是否正确。还要提醒用户关于变量作用域的问题,比如在循环内部是否可以访问外部的变量,或者是否需要使用global或local指令。不过基本遍历可能不需要这些高级用法,保持示例简单明了更合适。 可能用户在使用过程中会遇到数组为空的情况,所以建议在模板中添加空数组的判断,提升用户体验。还有,如果数组元素包含特殊字符,是否需要转义?不过这可能超出了当前问题的范围,但可以提到在输出时使用${str?html}来转义HTML内容,防止XSS攻击,但用户的问题主要是遍历,所以这个作为额外提示可能更好。 总结一下,回答的结构应该是先说明使用<#list>标签,然后给出示例代码,包括遍历和索引的使用,处理空数组的情况,以及可能的注意事项。同时,根据用户提供的引用资料,适当添加引用标识,比如引用[3]、引用[4]、引用[5]来支持回答的正确性。</think>在FreeMarker模板中遍历字符串数组可以通过`<#list>`标签实现。根据引用[3]的变量引用规则和引用[4]的sequence数据类型定义,字符串数组属于sequence类型,支持索引遍历。 ### 实现步骤 1. **定义字符串数组**(通常由后端传入): ```ftl <#assign strArr = ["apple", "banana", "cherry"]> <#-- 示例数组定义 --> ``` 2. **遍历并输出元素**: ```ftl <#list strArr as str> 索引:${str?index} | 值:${str} </#list> ``` 3. **空数组处理**: ```ftl <#list strArr as str> ${str} <#else> 当前数组为空 <#-- 当数组为空时显示此内容 --> </#list> ``` ### 语法说明 - 使用`<#list sequence as alias>`语法遍历数组[^4] - 通过`别名_index`获取索引值(如示例中的`str?index`)[^5] - `${变量名}`用于输出变量内容[^3] ### 注意事项 1. 若数组通过Java传递,需确保已使用`Model.addAttribute("strArr", array)`注入 2. 索引值从0开始(与Java数组索引一致) 3. 推荐使用`<#else>`处理空数组边界情况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值