2010年2月18日木曜日

SAStrutsでlogic:iterateの入れ子

  • あるオブジェクトが入れ子で配列を持っている場合Strutsではlogic:iterateタグを用いてアクセスする
  • その配列の中のオブジェクトがさらに配列を持っているような構造の場合
  • http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=12&topic=17617
  • なんかこんなページがひっかかった。コードブロックでこんな感じで記述すれば云々
  • SAStrutsでコードブロックを記述するとよくわからないエラーがでるため使えない
  • いろいろ検討した結果こんな感じで書くと通った

<logic:iterate id="object.headers" name="object" property="headers" indexid="idx">
 <html:text name="object.headers" property="cost" indexed="true" size="10">
 <logic:iterate id="details" name="object.headers" property="details" indexid="idxidx">
  <c:set var="beanDetail" value="object.headers[${idx}].details[${idxidx}]">
  ${details.name}
  <input name="${beanDetail}.amount" size="10" value="${object.headers[idx].details[idxidx].amount}" type="text">
 </c:set>
</logic:iterate>

  • ポイントはhtml:textをあきらめるてinputで記述する点。おい
  • Strutsの世代がかわるとつかえないかもしれないがSAStrutsではバージョンを固定しているためまあ問題ないだろう。

0 件のコメント:

コメントを投稿