- - PR -
strutsチェックボックスの表示(2次元配列)
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-12-16 00:53
こんにちは。
strutを学んでおりどうしてもわからないことがでてきました。 1次元配列の初期化はできたのですが 2次元配列になるとチェックボックスの 初期化ができない現象が起きています。 formクラス(TestForm.java) //1次元配列 private boolean[] test = new boolean[1]; //2次元配列 private boolean[][] test2 = new boolean[2][2]; //フォーム初期化メソッド public void reset (ActionMapping mapping, HttpServletRequest request) { //1次元配列の初期化 for (int i=0 ; i<1 ; i++){ test[i]=false; } //2次元配列の初期化 for(int i=0 ; i<2 ; i++){ for(int j=0 ;j<2 ; j++){ test2[i][j]=false; } } } //1次元配列のゲッター public boolean[] getTest() { return test; } //1次元配列を格納 public void setTest(boolean[] bs) { test = bs; } //1次元配列の要素を指定して格納 public void setTest(int index,boolean bs) { test[index] = bs; } //2次元配列の取得 public boolean[][] getTest2() { return test2; } //2次元配列の要素を指定して取得 public boolean getTest2(int index1,int index2) { return test2[index1][index2]; } //2次元配列を設定 public void setTest2(boolean[][] bs) { test2 = bs; } //2次元配列の要素を指定して格納 public void setTest2(int index1,int index2,boolean bs) { test2[index1][index2] = bs; } JSP画面表示前アクション //formのオブジェクト作成 TestForm tf = new TestForm(); //1次元配列に初期値trueを設定 tf.setTest(0,true); //2次元配列に初期値trueを設定 tf.setTest2(0,0,true); //セッションへ登録 session.setAttribute("tf",tf); JSP画面 <html:checkbox name="tf" property="test[0]"/>←チェックボックスにチェックされている <html:checkbox name="tf" property='<%="test2[0][0]"%>'/>←チェックボックスが空白 なぜか1次元配列の方だけ初期化されており 2次元配列の方は空白となってしまいます。 ゲッターセッターがおかしいのでしょうか・・・。 struts-config.xmlの設定は <action path="/test" type="study.Test" scope="session" name="tf"> </action> です。 name="tf"でありscopeがrequestなら画面が表示されないのは理解できるのですが sessionにしているので表示されると考えています。 ↑1次元配列は、ばっちり表示(チェック)されています。 何かわかる方がいらっしゃればご教授お願いします。 よろしくお願いします。 |
|
投稿日時: 2003-12-16 11:49
こんにちは
追記です 試しにJSP画面で bean:writeタグを使い 配列の中身を参照してみました。 すると 1次元配列の中身[0] <bean:write name="tf" property="test[0]" /><br> →true 2次元配列の中身です[0][0] <bean:write name="tf" property="test2[0][0]" /><br> →[Z@142b40 2次元配列の中身です[0] <bean:write name="tf" property="test2[0]" /><br> →[Z@142b40 となっていました。 つまりstruts?が2次元配列を 1次元配列として扱っていそうです・・・。 何かお知りの方がいらっしゃればご教授お願いします。 よろしくお願いします。 |
|
投稿日時: 2003-12-16 11:53
こんにちは。
まだ、ざっと見ただけで解決云々の話は出来ないのですが 長いコードを貼り付けるときはBBコードの [code] タグを使って 見やすい表示を心がけられる事をお勧めします。 正直私も(簡単な内容であっても)インデントが無いコードを 解析するのは抵抗が・・・。 |
|
投稿日時: 2003-12-16 13:02
org.apache.commons.beanutils.PropertyUtils を見ると、
確かに1次元配列までしか対応していないようです。 困ったらソースを見てみるべし。 |
|
投稿日時: 2003-12-16 13:26
返信ありがとうございます。 見やすいコード記述や 自分の中で分析するだけでなく 元のソースを見て解析することが 非常に大事だとわかりました。 ありがとうございました。 |
1
