使用Freemarker将字符串转换为布尔值

3

如何将字符串“true”转换为布尔值true,将“false”转换为布尔值false

我是这样定义一些链接的:

<#assign mailtoLink  =(setting(self, 'my.link.mailto'))! />
...

<#assign links = [
            {"linkTarget":mailtoLink,   "linkText":mailtoService,   "externalLink":"false", "iconName":"#icon-email"   },
            {"linkTarget":facebookLink, "linkText":facebookService, "externalLink":"true", "iconName":"#icon-facebook" }, ...]/>

内容来自CMS。 然后我希望使用循环将它们以列表形式展示,链接的属性将作为宏的参数:

<ul class="my-options-nav__list"> 
            <#list links as link>
                <#if link.linkTarget?has_content>
                    <li class="bwr-options-nav__list-item">
                       <@m.link
                            linkTarget=link.linkTarget
                            linkText=link.linkText
                            externalLink=link.externalLink?boolean
                            linkClass="bwr-link"
                            iconLeft={"id": "${link.iconName}"}
                        />
                    </li>
                </#if>
            </#list>
        </ul>

我经常从CoreMedia(或Freemarker?)中得到一个异常:
model   

com.coremedia.blueprint.cae.contentbeans.CMChannelImpl$$[id=127994]
view name   m.asOptionsNav
view    FreemarkerView[template=//WEB-INF/templates/sites/bwr17/com.coremedia.blueprint.common.contentbeans/CMChannel.m.asOptionsNav.ftl]
cause   Error rendering view
Error on line 54, column 80, in template /WEB-INF/templates/sites/com.coremedia.blueprint.common.contentbeans/CMChannel.m.asOptionsNav.ftl Found boolean, expecting one of: chunk, is_date, is_hash, float, matches, time, number_to_datetime, byte, substring, is_transform, web_safe, iso_ms_nz, groups, seq_contains, iso, is_method, eval, iso_ms, iso_utc_m_nz, parent, capitalize, number, if_exists, is_directive, iso_utc_h_nz, floor, is_boolean, split, node_name, seq_index_of, is_sequence, sort, is_node, sort_by, xhtml, iso_local_m_nz, iso_nz, node_namespace, date, last_index_of, short, ancestors, length, datetime, iso_local_ms, json_string, reverse, c, keys, iso_local_h_nz, has_content, replace, is_hash_ex, is_number, new, lower_case, string, exists, last, root, j_string, contains, round, long, ends_with, number_to_date, namespace, values, seq_last_index_of, uncap_first, iso_local, is_macro, index_of, word_list, int, iso_utc_nz, xml, double, node_type, rtf, url, iso_m, size, default, iso_h, iso_utc_m, ceiling, iso_h_nz, is_enumerable, iso_utc_h, iso_local_nz, iso_m_nz, left_pad, iso_utc_ms_nz, cap_first, interpret, children, chop_linebreak, is_collection, iso_utc, trim, is_string, number_to_time, upper_case, js_string, right_pad, is_indexable, iso_local_ms_nz, iso_utc_ms, iso_local_h, html, iso_local_m, first, starts_with in /WEB-INF/templates/sites/com.coremedia.blueprint.common.contentbeans/CMChannel.m.asOptionsNav.ftl
1个回答

3
问题在于你没有将布尔值转换为计算机可读格式。

在模板 [...] CMChannel.m.asOptionsNav.ftl 的第54行第80列发生错误,找到布尔值

查看文档中的?c

此内置函数将布尔值转换为字符串,用于“计算机语言”,而不是人类受众。 [...] 在生成JavaScript等内容时应使用此函数。

这意味着你必须使用

externalLink=(link.externalLink?boolean)?c

为了生成externalLink=trueexternalLink=false


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接