【问题标题】:How to get comma between Freemarker list如何在 Freemarker 列表之间获取逗号
【发布时间】: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


    【解决方案1】:

    如果您使用 FreeMarker 2.3.23 或更高版本,sep 标签将适合您:

    <#list users as user>
        ${user}<#sep>, </#sep>
    </#list>
    

    或者甚至比这更短:

    <#list users as user>${user}<#sep>, </#list>
    

    【讨论】:

      【解决方案2】:

      这将给出准确的结果

      其实你需要创建一个变量,然后在里面追加数据。例如&lt;#assign result =""/&gt;

      <#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】:

      您必须包含&lt;#if value_has_next&gt;,&lt;/#if&gt; 声明。

      这可能会有所帮助:

      <#assign seq = ["winter", "spring", "summer", "autumn"]>
      <#list seq as x>
        ${x_index + 1}. ${x}<#if x_has_next>,</#if>
      </#list>  
      

      将输出:

      1. 冬天,
      2. 春天,
      3. 夏天,
      4. 秋天

      在以下位置查看此示例和更多示例:

      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)。
      猜你喜欢
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 2011-03-20
      • 2018-03-25
      • 1970-01-01
      相关资源
      最近更新 更多