在 Freemarker 中将对象转换为字符串
cast Obbject to string in Freemarker
我正在尝试在 FREEMARKER 中打印地图的 value bay key 但出现异常
freemarker.core.NonStringException: Error on line 6, column 69 in internal_monitors.ftl
Expecting a string, date or number here, Expression object[key] is instead a freemarker.template.SimpleSequence
这是我的代码
<#if drives?exists>
<drives><#list drives as object>
<drive>
<#list object?keys as key>
<${key}><#if object[key]?exists>${object[key]}<#else>null</#if></${key}>
</#list>
</drive></#list>
</drives>
</#if>
有什么想法吗?
使用 ??
而不是 ?exists
。 ?exists
内置函数已弃用。
您必须检查 object[key]
值是否可显示(例如字符串、数字、日期...)或容器(哈希、序列)。在后一种情况下,您要么跳过它,要么迭代其内容:
<#if drives??>
<#list drives as object>
<drive>
<#list drive?keys as key>
<${key}>
<#if object[key]??>
<#if object[key]?is_hash>
HASH
<#elseif object[key]?is_sequence>
SEQUENCE
<#else>
${object[key]}
</#if>
<#else>
null
</#if>
</${key}>
</#list>
</drive>
</#list>
</#if>
我正在尝试在 FREEMARKER 中打印地图的 value bay key 但出现异常
freemarker.core.NonStringException: Error on line 6, column 69 in internal_monitors.ftl
Expecting a string, date or number here, Expression object[key] is instead a freemarker.template.SimpleSequence
这是我的代码
<#if drives?exists>
<drives><#list drives as object>
<drive>
<#list object?keys as key>
<${key}><#if object[key]?exists>${object[key]}<#else>null</#if></${key}>
</#list>
</drive></#list>
</drives>
</#if>
有什么想法吗?
使用
??
而不是?exists
。?exists
内置函数已弃用。您必须检查
object[key]
值是否可显示(例如字符串、数字、日期...)或容器(哈希、序列)。在后一种情况下,您要么跳过它,要么迭代其内容:<#if drives??> <#list drives as object> <drive> <#list drive?keys as key> <${key}> <#if object[key]??> <#if object[key]?is_hash> HASH <#elseif object[key]?is_sequence> SEQUENCE <#else> ${object[key]} </#if> <#else> null </#if> </${key}> </#list> </drive> </#list> </#if>