带有可选css类的Java Freemarker宏

带有可选css类的Java Freemarker宏,java,freemarker,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 Butt

我试图在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>

1) 
2) 
第2)行仅呈现“id”参数。如果我删除宏的class=“ui button”,则它将正确呈现


如何呈现两个或多个类参数?

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

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

最简单的方法就是创建一个包含
“ui按钮”
值的本地。在迭代
extra?键时
检查
“class”
键,如果找到,将其附加到本地类(以及前导空格)。模板将使用构造的值:

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