checkboxlistを複数行で出力する方法

Struts2のs:checkboxlistに配列を渡せば、複数選択可能なcheckboxが簡単に出力できる。

しかし、全てが1行に出てしまうので要素数が多い場合に具合が良くない。

次のように記述すると簡単に一行の出力要素数を調整できる。

元のJSPはこんな感じで出力していたとすると、これだと100要素があると1行に100個出てしまい、1つの要素の文字列の途中で折り返してしまったりと見栄えがいまいち良くない。

  <s:checkboxlist list="config.getList('area')" listKey="value" name="area" listValue="label" theme="simple"/>

次のようにiteratorで囲むように変更すると、この場合は 3個毎に折り返して出力されるようになる。

<s:iterator value="config.getList('area')" status="rs">
  <s:checkboxlist list="top" listKey="value" name="area" listValue="label" theme="simple"/>
  <s:if test="#rs.modulus(3)==0">
    <br>
  </s:if>
</s:iterator>

checkboxlistの違いは list属性が top に変わった事で、これは配列の要素1個ごとにcheckboxlistで出力しているイメージである。

Struts2の洗練された一連のカスタムタグのセットとValueStackおかげでやりたい事が簡潔に記述できる。

ちょっとTIPS:s:checkboxにしてしまうと未チェック時の特殊なコードも入るのでちょっと違う