2013-02-22 33 views
1

我試圖在freemarker上做一個宏,但我遇到了問題來實現css類作爲參數。 我的對象有一些默認的css類,我想添加可選的類。具有可選css類的Java Freemarker宏

<#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」,則它會正確呈現。

我可以做什麼來呈現兩個或更多的類參數?

回答

2

您需要構建一個包含所有類參數的字符串,並將其用作模板中單個HTML class屬性的值。

您不能擁有任意數量的class屬性/值對,並且仍然是合法的HTML。

最簡單的,基本上你現在擁有的就是創建一個帶有"ui-button"值的本地值。在遍歷extra?keys時,請檢查"class"鍵,如果找到,請將其附加到本地類(以及前導空格)。該模板將使用該構造值:

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

THX這麼多!!!!!!!!!!!!!!!! – claudioivp 2013-02-23 05:28:10