freemaker的多栏横向复选框列表组件。


<p>环境:使用fm是2.3.9,webwork2.2.4(使用切换语法):<br>
一:作为components组件的参数如果值为字符串,则需要在字符串上加上单引号。<br>
&lt;ww:component template="checkboxlist_portraitCols.ftl"&gt;<br>
 &lt;ww:param name="name" value="'test'" /&gt;&lt;!--注意单引号--&gt;<br>
 &lt;ww:param name="colCnt" value="4" /&gt;<br>
 &lt;ww:param name="list" value="{'1','2','3','4','5','6'}" /&gt;<br>
&lt;/ww:component&gt;<br><br>
二:终于理解freemaker的多值类型。<br><br>
&lt;#if (parameters.list?size%parameters.colCnt)?int==0&gt;:求余数是否为0,必须加上内置方法int。<br><br>
freemaker内置了chunk分块的方法,但是我始终没有想到怎么将这个快按纵向进行排列。横向好说,直接按行输出。因此写下列模板代码来实现。<br><br><br>
&lt;#assign itemCount = 0/&gt;<br>
&lt;#if parameters.list??&gt; <br>
 &lt;#assign width=(100/parameters.colCnt)?int&gt;<br>
 <br>
 &lt;#assign itemCount = itemCount + 1/&gt;</p>
 &lt;#assign rowCnt=0/&gt;<br>
 &lt;#assign colCnt=0/&gt;<br>
 &lt;#list parameters.list?chunk(parameters.colCnt) as row&gt; <br>
  &lt;#assign rowCnt=rowCnt+1/&gt;<br>
  &lt;tr&gt;<br>
  &lt;#list row as cell&gt;<br>
   &lt;#assign itemCount = itemCount + 1/&gt;<br>
   &lt;#assign colCnt=colCnt+1/&gt;<br>
   &lt;#if rowCnt==0 &amp;&amp; col&lt;parameters.colCnt-1 &gt;<br>
    &lt;td width='${width}%'&gt;<br>
   &lt;#else&gt;<br>
    &lt;td&gt;<br>
   &lt;/#if&gt;<br>
   &lt;#if parameters.listKey??&gt;<br>
    &lt;#assign itemKey = cell[parameters.listKey]/&gt;<br>
   &lt;#else&gt;<br>
     &lt;#assign itemKey = cell/&gt;<br>
   &lt;/#if&gt;<br>
   <br>
   &lt;#if parameters.listValue??&gt;<br>
     &lt;#assign itemValue = cell[parameters.listValue]/&gt;<br>
   &lt;#else&gt;<br>
     &lt;#assign itemValue = cell/&gt;<br>
   &lt;/#if&gt;<br>
   &lt;#assign itemKeyStr=itemKey.toString() /&gt;<br>
    &lt;input type="checkbox" name="${parameters.name?html}"
value="${itemKeyStr?html}"
id="${parameters.name?html}-${itemCount}"&lt;#rt/&gt;<br>
   &lt;#if tag.contains(parameters.nameValue, itemKey)&gt;<br>
    checked="checked"&lt;#rt/&gt;<br>
   &lt;/#if&gt;<br>
   &lt;#if parameters.disabled!(false)&gt;<br>
    disabled="disabled"&lt;#rt/&gt;<br>
   &lt;/#if&gt;<br>
   /&gt;<br>
   &lt;label for="${parameters.name?html}-${itemCount}" class="checkboxLabel"&gt;${itemValue?html}&lt;/label&gt;<br>
   &lt;/td&gt;   <br>
  &lt;/#list&gt;<br>
 &lt;/#list&gt; <br>
&lt;#else&gt;<br>
  &amp;nbsp;<br>
&lt;/#if&gt;<br><br>
jsp引用页面测试代码:<br>
&lt;table width="80%"&gt;<br>
&lt;ww:component template="checkboxlist_landscapeCols.ftl"&gt;<br>
 &lt;ww:param name="name" value="'test'" /&gt;<br>
 &lt;ww:param name="colCnt" value="4" /&gt;<br>
 &lt;ww:param name="list" value="{'1','2','3','4','5','6'}" /&gt;<br>
&lt;/ww:component&gt;<br>
&lt;/table&gt;

你可能感兴趣的:(freemaker)