如何在 Freemarker 列表之间获取逗号
Posted
技术标签:
【中文标题】如何在 Freemarker 列表之间获取逗号【英文标题】:How to get comma between Freemarker list 【发布时间】:2014-06-13 06:50:11 【问题描述】:我在 freemarker 中迭代一个 java 列表,但我想在单词之间使用逗号。 这是我的代码
<#list key_list[key] as value >$value?js_string, </#list>
这给了我输出
a,b,c,d,
我想要这种格式的输出:(最后没有逗号)
a,b,c,d
我怎样才能得到它
【问题讨论】:
【参考方案1】:如果您使用 FreeMarker 2.3.23 或更高版本,sep
标签将适合您:
<#list users as user>
$user<#sep>, </#sep>
</#list>
或者甚至比这更短:
<#list users as user>$user<#sep>, </#list>
【讨论】:
【参考方案2】:这将给出准确的结果
其实你需要创建一个变量,然后在里面追加数据。例如<#assign result =""/>
<#assign result =""/>
<#assign seq = ["a", "b", "c", "d"]> // test data for checking output format
<#list seq as x>
<#assign result = result+"$x"/>
<#if x_has_next>
<#assign result = result+","/>
</#if>
</#list>
$result
结果
a,b,c,d
【讨论】:
自 FTL 2.3.23 以来,x_has_next 已更改为 x?has_next。此外,这也适用于哈希(例如 hashKey?has_next)。【参考方案3】:您必须包含<#if value_has_next>,</#if>
声明。
这可能会有所帮助:
<#assign seq = ["winter", "spring", "summer", "autumn"]>
<#list seq as x>
$x_index + 1. $x<#if x_has_next>,</#if>
</#list>
将输出:
-
冬天,
春天,
夏天,
秋天
在以下位置查看此示例和更多示例:
http://freemarker.org/docs/ref_directive_list.html
【讨论】:
如果您的 freemarker 版本是 2.3.23 或更高版本,sep 标签将为您工作: $user, #sep> # list> 甚至更短:$user, #list> 在#sep
不够灵活的地方,推荐的形式是x?has_next
而不是x_has_next
(2.3.23起),还有?is_first
、?index
等循环变量内置函数 (freemarker.apache.org/docs/ref_builtins_loop_var.html)。以上是关于如何在 Freemarker 列表之间获取逗号的主要内容,如果未能解决你的问题,请参考以下文章