带有可选css类的Java Freemarker宏

时间:2013-02-22 18:13:07

标签: java freemarker

我试图在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行只是渲染&#34; id&#34;参数。如果我删除class =&#34; ui-button&#34;的宏,然后它正确呈现。

我可以做些什么来渲染两个或更多类参数???

1 个答案:

答案 0 :(得分:2)

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

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

现在基本上最简单的就是创建一个"ui-button"值的本地。在迭代extra?keys时检查"class"密钥,如果找到,将其附加到本地类(以及前导空格)。模板将使用该构造值:

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