Java嵌套Map在FreeMarker中遍历获取路径的问题
解决FreeMarker遍历嵌套Map获取路径的问题
嘿,我来帮你搞定这个问题!你看到的错误应该是因为v是TreeMap类型,FreeMarker没法直接把它转换成字符串输出,所以抛出了类似v must be convertible to string, but it's a TreeMap的截断提示(就是你看到的“v mu...”)。咱们得深入嵌套的Map结构里去拿路径,具体写法看你的TreeMap结构:
情况1:每个TreeMap的键是分类标识,值是路径
如果你的TreeMap是{分类名: 路径}的结构,那需要嵌套遍历外层Map的values,再遍历内层TreeMap的键值对:
<#list CategoriesDocuments?values as categoryTree> <!-- 遍历每个分类TreeMap的键值对 --> <#list categoryTree?entry_set as entry> 分类:${entry.key},对应的路径:${entry.value} </#list> </#list>
情况2:只需要所有路径,不管TreeMap里的键
如果你的目标只是把所有路径都取出来,不用管分类键,那可以直接遍历内层TreeMap的values:
<#list CategoriesDocuments?values as categoryTree> <#list categoryTree?values as filePath> 当前路径:${filePath} </#list> </#list>
调试小技巧
要是你不确定嵌套结构到底是什么样的,可以先用?debug指令打印完整的对象信息,方便你理清层级:
${CategoriesDocuments?debug}
内容的提问来源于stack exchange,提问作者user7889679
相关产品推荐
相关产品推荐

