Преобразование строки в логическое значение с помощью Freemarker

Как я могу преобразовать строку «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

person du-it    schedule 05.04.2018    source источник


Ответы (1)


Проблема в том, что вы не конвертируете логическое значение в читаемый компьютером формат.

Ошибка в строке 54, столбце 80, в шаблоне [...] CMChannel.m.asOptionsNav.ftl Found boolean

см. ?c из документа

Эта встроенная функция преобразует логическое значение в строку для «компьютерного языка», а не для человеческой аудитории. [...] При создании JavaScript и т.п. следует использовать это

Это означает, что вы должны использовать

externalLink=(link.externalLink?boolean)?c

чтобы произвести externalLink=true или externalLink=false

person Gregoire    schedule 17.04.2018