我们可以在Freemarker中使用任何类型的哈希键吗?
例如:
在Java中,我们有:Hash<User, Boolean> mapUserToSelected = new HashMap<>()
在Freemarker中,我们有:
<#list mapUserToSelected as user, selected>
<p>${user.name}</p>
<p>${selected?c}</p>
</#list>
但是,我们得到了[<p>${selected?c}</p>
的“以下内容评估为空或丢失”],并且我确定它存在于地图中。
如果我使用String作为哈希Hash<String, Boolean> mapUserToSelected = new HashMap<>()
的键,它将起作用。
哈希键仅需要是String吗?
对象mapUserToSelected
可以包含任何Object
作为键,内置?c将是convert a string to numeric。不知道为什么要将其应用于布尔值。
[也不要混淆自己:当我们想将对象mapUserToSelected
从逻辑(控制器)发送到UI时,则基于TemplateHashModel
的定义,键必须为String时。示例:
ModelAndView mainView = new ModelAndView();
mainView.getModel().put("usersMap", mapUserToSelected );
但是对象本身可以包含任何东西,如果您对每个键的值感兴趣,则可以使用mapUserToSelected?keys
获取键列表,然后使用?index
访问每个键列表。