gpt4 book ai didi

java - Freemarker 迭代映射中返回不需要的值

转载 作者:行者123 更新时间:2023-11-30 06:28:03 25 4
gpt4 key购买 nike

迭代map时

<#list map?keys as key>
${key}
</#list>

将返回 clone,1,getKey,5,etc

谁有解决方案而不是一个一个地删除不需要的值?

最佳答案

如果我理解得很好的话,你会混合使用方法和键。这取决于 object_wrapper 配置设置 (Configuration.setObjectWrapper(ObjectWrapper))。如果您使用 BeansWrapper 作为 object_wrapper(相对于 DefaultObjectWrapper,它从来没有出现过这个问题),这可以通过 你的BeansWrapper.setSimpleMapWrapper(true)。但是,在该项目中它是 false 可能并非偶然。 FreeMarker 语言没有映射类型是一个问题。它有一种叫做散列的东西,只支持字符串键(子变量)。所以人们可能只是使用 java.util.Map-s 的 Java API,而不是像 []?keys 等哈希运算符。 ,为此需要 setSimpleMapWrapper(false),否则您看不到 Map 方法。然后你应该写map.keySet()

更新:在 2.3.22 及更高版本中,没有人被迫再使用混合方法和键(即使在当时也是一个相当困惑的解决方法),因为 Java 方法(和 Java Bean 属性) ) 可通过 ?api 在单独的命名空间中访问,例如 myMap?api.get(nonStringKey)myMap?api.keySet() 等. 所以你可以使用一个 ObjectWrapper 只公开 Map 键并支持 ?api 特性(最好是 object_wrapper=DefaultObjectWrapper(2.3 .22)),启用?api(api_builtin_enabled=true;默认情况下不允许后向安全),然后只需使用?api 当你需要来自 Java API 命名空间的东西时,如果你的 Map 键是String-s.

关于java - Freemarker 迭代映射中返回不需要的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12985441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com