【问题标题】:What are supported types for keys of hash in freemarker?freemarker 中的哈希键支持哪些类型?
【发布时间】:2020-09-24 16:17:18
【问题描述】:

我们可以在 Freemarker 中使用任何类型的哈希键吗?

例如:

在 Java 中,我们有: Hash<User, Boolean> mapUserToSelected = new HashMap<>()

在 Freemarker 中我们有:

<#list mapUserToSelected as user, selected>
  <p>${user.name}</p>
  <p>${selected?c}</p>
</#list>

但是,对于&lt;p&gt;${selected?c}&lt;/p&gt;,我们得到“以下已评估为空或缺失”,我确信它存在于地图中。

如果我使用 String 作为哈希键 Hash&lt;String, Boolean&gt; mapUserToSelected = new HashMap&lt;&gt;() 它会起作用。

hash的key只需要String吗?

【问题讨论】:

  • 您的 Freemarker 模板中有一个提示。
  • Hash的全类名是什么?或者它是另一个提示?
  • 是经典的HashMap
  • 你会相应地更正你的 Java 行吗?您是否注意到我的其他评论可能解决了您的问题?
  • 不,这与错字无关,它没有回答我的问题。谢谢

标签: freemarker


【解决方案1】:

对象mapUserToSelected 可以包含任何Object 作为键,内置的?c 将convert a string to numeric。不知道为什么要将它应用于布尔值。

另外,不要混淆我们自己:当我们想要将对象mapUserToSelected 从逻辑(控制器)发送到 UI 时,根据TemplateHashModel 的定义,键必须是字符串。 示例:

ModelAndView mainView = new ModelAndView();
mainView.getModel().put("usersMap", mapUserToSelected );

但对象本身可以包含任何内容,如果您对每个键的值感兴趣,您可以使用 mapUserToSelected?keys 获取键列表,然后使用 ?index 访问每个键列表。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多