環境:使用fm是2.3.9,webwork2.2.4(使用切換語法):
一:作為components組件的參數如果值為字符串,則需要在字符串上加上單引號。
<ww:component template="checkboxlist_portraitCols.ftl">
?<ww:param name="name" value="'test'" /><!--注意單引號-->
?<ww:param name="colCnt" value="4" />
?<ww:param name="list" value="{'1','2','3','4','5','6'}" />
</ww:component>
二:終于理解freemaker的多值類型。
<#if (parameters.list?size%parameters.colCnt)?int==0>:求余數是否為0,必須加上內置方法int。
freemaker內置了chunk分塊的方法,但是我始終沒有想到怎么將這個快按縱向進行排列。橫向好說,直接按行輸出。因此寫下列模板代碼來實現。
<#assign itemCount = 0/>
<#if parameters.list??>
?<#if (parameters.list?size%parameters.colCnt)?int==0>
??<#assign rowCnt=(parameters.list?size/parameters.colCnt)?int/>
?<#else>
??<#assign rowCnt=(parameters.list?size/parameters.colCnt)?int+1/>
?</#if>
?
?<#assign width=(100/parameters.colCnt)?int>
?
?<#assign itemCount = itemCount + 1/>
?<#list 0..rowCnt-1 as row>
??<tr>
??<#list 0..parameters.colCnt?int-1 as col>
???<#assign itemCount = itemCount + 1/>
???<#if row==0 && col<parameters.colCnt-1 >
????<td width='${width}%'>
???<#else>
????<td>
???</#if>
????<#if row+col*rowCnt<parameters.list?size >
?????<#assign item=parameters.list[row+col*rowCnt] />
?????<#if parameters.listKey??>
??????<#assign itemKey = item[parameters.listKey]/>
?????? <#else>
???????? <#assign itemKey = item/>
?????? </#if>
??????
?????? <#if parameters.listValue??>
???????? <#assign itemValue = item[parameters.listValue]/>
?????? <#else>
???????? <#assign itemValue = item/>
?????? </#if>
?????? <#assign itemKeyStr=itemKey.toString() />
?????<input type="checkbox" name="${parameters.name?html}" value="${itemKeyStr?html}" id="${parameters.name?html}-${itemCount}"<#rt/>
?????? <#if tag.contains(parameters.nameValue, itemKey)>
??? ???checked="checked"<#rt/>
?????? </#if>
?????? <#if parameters.disabled!(false)>
??? ???disabled="disabled"<#rt/>
?????? </#if>
?????/>
?????<label for="${parameters.name?html}-${itemCount}" class="checkboxLabel">${itemValue?html}</label>
????<#else>
?????
????</#if>
???</td>
??</#list>?
??</tr>
?</#list>
?
<#else>
?
</#if>
jsp引用頁面測試代碼:
<table width="80%">
<ww:component template="checkboxlist_portraitCols.ftl">
?<ww:param name="name" value="'test'" />
?<ww:param name="colCnt" value="4" />
?<ww:param name="list" value="{'1','2','3','4','5','6'}" />
</ww:component>
</table>
posted on 2007-04-21 18:21
不做浮躁的人 閱讀(1768)
評論(0) 編輯 收藏 所屬分類:
freemarker