2013-02-22 4 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

관련 문제