【发布时间】: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
我怎样才能得到它
【问题讨论】:
标签: java freemarker
我在 freemarker 中迭代一个 java 列表,但我想在单词之间使用逗号。 这是我的代码
<#list key_list[key] as value >${value?js_string}, </#list>
这给了我输出
a,b,c,d,
我想要这种格式的输出:(最后没有逗号)
a,b,c,d
我怎样才能得到它
【问题讨论】:
标签: java freemarker
如果您使用 FreeMarker 2.3.23 或更高版本,sep 标签将适合您:
<#list users as user>
${user}<#sep>, </#sep>
</#list>
或者甚至比这更短:
<#list users as user>${user}<#sep>, </#list>
【讨论】:
这将给出准确的结果
其实你需要创建一个变量,然后在里面追加数据。例如<#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
【讨论】:
您必须包含<#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>
将输出:
在以下位置查看此示例和更多示例:
【讨论】:
#sep不够灵活的地方,推荐的形式是x?has_next而不是x_has_next(2.3.23起),还有?is_first、?index等循环变量内置函数 (freemarker.apache.org/docs/ref_builtins_loop_var.html)。