如何使用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
相关产品推荐
相关产品推荐

