7

weblogicでj2eeアプリケーションを実行しています。マルチボックスと混同しました。

マルチボックスについて私が知っていることは、チェックされた項目が送信時に文字列の配列として渡されるということです。

チェックボックスをオフにすると、1つのボックスがオンのままである限り、アプリケーションで正常に機能する理由がわかりませんが、すべてをオフにすると、送信された配列は、以前にチェックされたマルチボックスの配列になります。空になります。

手伝ってくれませんか。

4

1 に答える 1

15

ActionFormクラスのreset()メソッドに精通していますか?

このメソッドの人生の目的は、チェックボックスをリセットすることです。フォームにチェックボックスがオンになっていて送信すると、そのチェックボックスがリクエストに含まれます。チェックボックスがオフの場合、リクエストに対して何も送信されません(GET送信はこの動作を観察する簡単な方法です)。

Strutsがリクエストバインドを実行すると、リクエストのパラメータとフォームのパラメータが名前で一致します。つまり、一致するものがある場合です。

次に、次の手順を検討します。

  • ActionFormにブールフィールドがあります。
  • フォームに一致するチェックボックスもあります。
  • フォームを送信します=>Strutsがリクエストをバインドするので、ActionFormで私のプロパティがtrueになります。
  • フォームのチェックボックスをオフにして、もう一度送信します=>チェックボックスのリクエストで何も送信されません=>Strutsにはバインドするものがありません=>アクションフォームでフィールドがtrueのままになります。

上記は複数のチェックボックスに適用されますが、1つの値ではなく配列を取得します。

reset()メソッドに入ります。これは、リクエストをバインドする前にStrutsによって呼び出されます。ここで、フィールド値をfalseに設定できます。リクエストに到着した場合、Strutsはそれをtrue=>OKに置き換えます。リクエストに到着しない場合(チェックされていないため)、値はfalseのままになります=>再びOK。

マルチボックスについても同じことが言えます。配列の長さをゼロ(nullではない)に減らして、ActionFormから値のリストをリセットする必要があります。

ActionFormにリクエストスコープがある場合、オブジェクトはリクエストごとに再作成されるため、通常は問題になりません。ただし、チェックボックスを備えたセッションスコープのActionFormの場合、reset()は必須です。

于 2010-03-04T09:49:32.903 に答える