You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用FreeMarker拆分HashMap中的值?

如何用FreeMarker拆分HashMap的值并在表格中展示

当然可以实现!FreeMarker内置了字符串拆分的功能,完全能满足你把HashMap中用分号分隔的值拆分开,再按需显示在表格里的需求。下面给你几种实用的实现方式:

1. 直接拆分后按位置取值(最常用)

针对你示例里"GFPZ001Q;OK"这种固定两段格式的value,用split(";")方法把字符串拆分成序列,然后通过索引直接获取对应部分:

<table border="1">
  <thead>
    <tr>
      <th>Key</th>
      <th>代码</th>
      <th>状态</th>
    </tr>
  </thead>
  <tbody>
    <#list gfpVb.chaines as key, value>
      <tr>
        <td><strong>${key}</strong></td>
        <#-- 用分号拆分value,存储到临时变量 -->
        <#assign splitParts = value.split(";")>
        <#-- 按索引取拆分后的内容,加!""避免空值报错 -->
        <td>${splitParts[0]!""}</td>
        <td>${splitParts[1]!"未知状态"}</td>
      </tr>
    </#list>
  </tbody>
</table>

2. 循环遍历拆分后的所有部分(灵活适配多段内容)

如果你的value可能有不确定的分号段数,可以用嵌套的<#list>循环遍历拆分后的每个部分:

<table border="1">
  <tbody>
    <#list gfpVb.chaines as key, value>
      <tr>
        <td><strong>${key}</strong></td>
        <#-- 遍历拆分后的每个片段,逐个显示,?trim去除前后空格 -->
        <#list value.split(";") as part>
          <td>${part?trim}</td>
        </#list>
      </tr>
    </#list>
  </tbody>
</table>

3. 处理异常情况(避免格式错误导致报错)

如果存在value格式不规范(比如没有分号、分号数量不足)的情况,建议添加判断逻辑或者默认值,防止模板运行报错:

<#list gfpVb.chaines as key, value>
  <tr>
    <td><strong>${key}</strong></td>
    <#assign splitParts = value.split(";")>
    <#-- 判断拆分后的长度,按需显示 -->
    <#if splitParts?size >= 2>
      <td>${splitParts[0]}</td>
      <td>${splitParts[1]}</td>
    <#else>
      <td>${value}</td>
      <td>格式错误</td>
    </#if>
  </tr>
</#list>

关键知识点说明

  • ${value.split(";")}:FreeMarker的字符串内置函数,将字符串按指定分隔符(这里是分号;)拆分成序列(类似Java的List)。
  • !"":FreeMarker的默认值运算符,当索引对应的元素不存在时,用空字符串替代,避免抛出IndexOutOfBoundsException。
  • ?trim:去除字符串前后的空白字符,让显示更整洁。

内容的提问来源于stack exchange,提问作者HeartDeath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:26:19