
明細行のチェックボックスで、選択した状態で画面再表示時にチェックを外した場合、再度画面を表示すると外したはずのチェックが戻ってしまいます。
現象
1.下記「作成したJSP」のチェックボックスを選択し、サーバへ送る。
2.「ViewList」内のチェックボックス「testCheckBox」(boolean型)にtrueが設定される。
※ViewListはtestActionFormのList型で、javaでもIteratorで1件づつtestActionFormを取得し、「testCheckBox」を確認している
3.上記1と同じHTMLフォームにおいて、今度はチェックボックスの選択を外して、サーバへ送る。
4.チェックを外したにも関わらず、trueの状態になってしまう。
良い対処方法があれば、ご教授をお願いします
※他のホームページで、ActionFormに下記メソッドを記述すると、チェックボックスが正常に戻ると書いてあり、試しましたがダメでした。
画面ActionForm内に、testActionFormのListを作成し、その中にチェックボックスがある場合、適用されないのでしょうか?
public void reset(ActionMapping mapping, HttpServletRequest request){
testCheckBox=false;
}
☆作成したJSP
<%-- 明細行の反復表示 start --%>
<logic:iterate name="testActionForm" id="ViewList"property="ViewList" indexId="idx">
<!-- チェックボックス 開始-->
<td nowrap >
<html:checkbox property="testCheckBox" name="ViewList" indexed="true" index="idx" />
</td>
<!-- チェックボックス 終了-->
<!-- 入力テキスト 開始-->
<td nowrap >
<html:text property="testInput" size="50" maxlength="30" name="ViewList" indexed="true" index="idx" />
</td>
<!-- 入力テキスト 終了-->
<%-- 明細行の反復表示 end --%>
</logic:iterate>

No.3ベストアンサー
- 回答日時:
>>resetメソッドを定義するのは、ActionFormのクラスです。
>ActionFormのクラスに下記resetメソッドを定義しています。
>public void reset(ActionMapping mapping, >HttpServletRequest request){
>testCheckBox=false;
>}
ActionFormがもっているViewListのtestActionFormについてです。
public void reset(ActionMapping mapping, HttpServletRequest request){
for(int i=0;i<viewList.size();i++){
((testActionForm)viewList.get(i)).setTestCheckBox(false);
}
}
この回答への補足
emi2006さん
教えていただいた方法で実行してみたら、うまくできました!!
ありがとうございます。
ただ・・・
新たに下記問題が発生して困っています
(1)あるボタンを押下すると、チェックボックスを選択にしているのに、再表示すると未選択になる。
(2)たまに 「java.lang.IndexOutOfBoundsException: Index: 1, Size: 1」というエラーが発生する。
押下するボタンに引数を持たせて、その引数により、教えていただいた方法を読み飛ばす等試してみましたが
ダメでした・・・(自分のやり方が悪いだけ?)
何度も申し訳ないですが、良い対処方法やアドバイスがあれば、ぜひお願いいたします。
emi2006さん 返事が送れて申し訳ありません
回答ありがとうございます。
確かに、これならうまくいく気がします。
明日試して、結果を報告いたします。

No.4
- 回答日時:
わはは。
私もやりました・・・(笑)。
既に回答は出ていますが、ActionFormのresetメソッドで、きちっと初期化(と、いうかリフレッシュ)するということです。
ActionFormのresetメソッドは、無いとコンパイルエラーが確か出るので、メソッド自体は既に記述していると思うのですが(中身が空でも)。
>画面ActionForm内に、testActionFormのListを作成し、その中にチェックボックスがある場合、適用されないのでしょうか?
チェックボックスが複数(List Size分)あるってことですよね?
今、実は手元に動いている物があるので、大丈夫だと思うのですが・・・(よく見たら、質問者さんの状況に色々と条件が付加されている内容でわかりにくいので、ソースの掲載はあえてしません)。
No.3さんのやり方でやってみて、だめなら再質問ください。
suzume00さん、回答ありがとうございます
>チェックボックスが複数(List Size分)あるってことですよね?
その通りです。
>ソースの掲載はあえてしません
機会があれば、ぜひ教えてください。
色々な手法を見て、勉強したいので・・・
ご意見ありがとうございました

No.2
- 回答日時:
ActionFormに定義してあるtestActionFormと、そのプロパティViewListの内部のクラスtestActionFormは同一クラスということですか?
resetメソッドを定義するのは、ActionFormのクラスです。
そこで、ViewList全てのBeanについてfalseを設定してみてはどうでしょうか。
この回答への補足
emi2006さん、たびたび回答ありがとうございます。
ご質問の件ですが、
>ActionFormに定義してあるtestActionFormと、そのプロパティViewListの内部のクラスtestActionFormは同一クラスということですか?
同一クラスですが、プロパティViewList(List型)の中にあるtestActionFormの内容は、明細1行毎に値は異なります
>resetメソッドを定義するのは、ActionFormのクラスです。
ActionFormのクラスに下記resetメソッドを定義しています。
public void reset(ActionMapping mapping, HttpServletRequest request){
testCheckBox=false;
}
>そこで、ViewList全てのBeanについてfalseを設定してみてはどうでしょうか。
すいません。何か参考になるソースかホームページがあれば教えていただけないでしょうか?
よろしくお願いいたします

No.1
- 回答日時:
testActionFormとListの関係が分からないので正確でないですが、
resetを定義するのは、Actionに定義してあるActionFormですよ。
この場合、
testActionFormのプロパティとして、testActionFormのリストを持ってると言うことですか?
この回答への補足
emi2006さん、回答ありがとうございます
ご質問ですが、
testActionFormには、「ViewList」(List型)のプロパティがありまして、その中にtestActionFormが複数行存在する形です。
testActionForm(Actionに定義してあるActionForm)
└ViewList(List型)
├testActionForm(明細行 1行目)
├testActionForm(明細行 2行目)
├testActionForm(明細行 3行目)
├testActionForm(明細行 4行目)
├testActionForm(明細行 5行目)
~
└testActionForm(明細行 N行目)
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- Excel(エクセル) スプレッドシートのチェックボックスとフィルタを連携させたい 2 2022/09/26 18:02
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) userformでSheetを選択して開くコード 1 2023/05/15 16:27
- Excel(エクセル) たくさんあるフォームコントロールを効率よく確認するには 1 2022/12/24 12:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコード件数の表示
-
別クラスのmainメソッドの実行
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
スーパークラスからサブクラス...
-
JavaからCへ
-
abstract と static を一緒に付...
-
System.out.print
-
C# 点の描き方をおしえてくだ...
-
StringBufferからStringへキャ...
-
シェルスクリプトからのJavaメ...
-
親の親のメソッドを呼ぶには?
-
.get○○Info(); メソッド につ...
-
IDLファイルとヘッダーファイル...
-
C# の ByVal と ByRef について
-
メソッド宣言の戻り値の型にク...
-
YYYYMMDD書式の日付に対する適...
-
C言語での文字列より値を抜き出す
-
staticのメリット、デメリット
-
C# 他のnamespaceにあるメソッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
abstract と static を一緒に付...
-
レコード件数の表示
-
コマンドライン引数のチェック
-
StringBufferからStringへキャ...
-
別クラスのmainメソッドの実行
-
Google Apps Script で getRang...
-
JUnitのテストメソッドごとのメ...
-
なぜprotected overrideなのか
-
C言語での文字列より値を抜き出す
-
Java初心者です、エラーの意味...
-
メソッド宣言の戻り値の型にク...
-
シェルスクリプトからのJavaメ...
-
YYYYMMDD書式の日付に対する適...
-
メソッドの引数に指定されてい...
-
System.out.print
-
クラスを作るとメソッドの数が...
-
Strutsでチェックボックスの値...
-
public static void main (Stri...
おすすめ情報