【问题标题】:Java Freemarker macro with optional css classes带有可选 css 类的 Java Freemarker 宏
【发布时间】:2013-02-22 18:13:07
【问题描述】:

我正在尝试在 freemarker 上做一个宏,但是我在将 css 类实现为参数时遇到了问题。 我的对象有一些默认的 css 类,我想添加可选的类。

<#macro Button href extra...>
    <a href="${href}" class="ui-button"
    <#list extra?keys as attr>
    ${attr}="${extra[attr]?html}"
    </#list>
    >Anchor Button</a>
</#macro>

1) <@Button href="link.html"></@Button>
2) <@Button href="link.html" id="button1" class="marginrightnone"></@Button>

第 2) 行仅呈现“id”参数。如果我删除宏的 class="ui-button" ,那么它会正确呈现。

如何渲染两个或更多类参数???

【问题讨论】:

    标签: java freemarker


    【解决方案1】:

    您需要构造一个包含所有类参数的字符串,并将其用作模板中单个 HTML class 属性的值。

    您不能拥有任意数量的class 属性/值对并且仍然是合法的 HTML。

    基本上你现在所拥有的最简单的方法是创建一个包含"ui-button" 值的本地。当您遍历 extra?keys 时,检查 "class" 键,如果找到,将其附加到本地类(以及前导空格)。模板将使用该构造值:

    <a href="${href}" classes="${local_classes}"
    

    【讨论】:

      猜你喜欢
      • 2015-10-02
      • 1970-01-01
      • 2012-12-21
      • 2017-05-01
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      相关资源
      最近更新 更多