StrutsのJSPにおいて、「logic:iterate」を入れ子にして一覧表を作ってみました。
しかし、思い通りのHTMLが出力されません。indexのカウントアップ部分がおかしいのです。
JSPは以下の通り。
JSP
1<table> 2 <logic:iterate id="row" name="testForm" property="rows" indexId="index"> 3 <tr> 4 <td><html:text name="row" property="code" indexed="true" /></td> 5 <logic:iterate id="col" name="testForm" property="cols" indexId="col_idx"> 6 <td><html:text name="row" property="${col[\"col_name\"]}" indexed="true" /></td> 7 </logic:iterate> 8 </tr> 9 </logic:iterate> 10</table> 11
出力されるHTMLは以下の通り。
HTML
1<table> 2 <tr> 3 <td><input type="text" name="row[0].code"></td> 4 <td><input type="text" name="row[0].col_name1"></td> 5 <td><input type="text" name="row[1].col_name2"></td> 6 <td><input type="text" name="row[2].col_name3"></td> 7 </tr> 8 <tr> 9 <td><input type="text" name="row[1].code"></td> 10 <td><input type="text" name="row[0].col_name1"></td> 11 <td><input type="text" name="row[1].col_name2"></td> 12 <td><input type="text" name="row[2].col_name3"></td> 13 </tr> 14 <tr> 15 <td><input type="text" name="row[2].code"></td> 16 <td><input type="text" name="row[0].col_name1"></td> 17 <td><input type="text" name="row[1].col_name2"></td> 18 <td><input type="text" name="row[2].col_name3"></td> 19 </tr> 20</table>
期待しているHTMLは以下の通り。
HTML
1<table> 2 <tr> 3 <td><input type="text" name="row[0].code"></td> 4 <td><input type="text" name="row[0].col_name1"></td> 5 <td><input type="text" name="row[0].col_name2"></td> 6 <td><input type="text" name="row[0].col_name3"></td> 7 </tr> 8 <tr> 9 <td><input type="text" name="row[1].code"></td> 10 <td><input type="text" name="row[1].col_name1"></td> 11 <td><input type="text" name="row[1].col_name2"></td> 12 <td><input type="text" name="row[1].col_name3"></td> 13 </tr> 14 <tr> 15 <td><input type="text" name="row[2].code"></td> 16 <td><input type="text" name="row[2].col_name1"></td> 17 <td><input type="text" name="row[2].col_name2"></td> 18 <td><input type="text" name="row[2].col_name3"></td> 19 </tr> 20</table>
各種構造は以下の通り。
JAVA
1public class testForm extends ActionForm { 2 private List _rows = new ArrayList(); 3 private List _cols = new ArrayList(); 4 public List getRows() { 5 return _rows; 6 } 7 public void setRows(List rows) { 8 _rows = rows; 9 } 10 public RowItem getRow(int index) { 11 return (RowItem) _rows.get(index); 12 } 13 public List getCols() { 14 return _cols; 15 } 16 public void setCols(List cols) { 17 _cols = cols; 18 } 19 public ColItem getCol(int index) { 20 return (ColItem) _cols.get(index); 21 } 22} 23public class RowItem { 24 private String _code = ""; 25 private String _col_name1 = ""; 26 ・・・ 27 private String _col_name10 = ""; 28} 29public class ColItem { 30 private String _col_name = ""; 31 private String _col_type = ""; 32 ・・・ 33} 34
なぜかcolのループの中でrowのindexがカウントアップされてしまいます。
期待通りのHTMLを出力したのですが、
どなたか回避方法が分かる方がおられましたらご教示ください。
回答2件
あなたの回答
tips
プレビュー