5

私はこのシナリオに遭遇しました。

class MyForm extends IdSelectionForm {
  private Boolean approveIt = true;
  .....
}

私のJSTLフォームはで構成されています

<html:checkbox property="approveIt" styleId="style1" value="true"/>

チェックボックスを選択して送信すると。Struts アクションでは、このフィールドに真の値が設定されます。また、チェックを外して送信すると。それから私も真価を得る。デフォルト値のあるものかどうか疑問に思っています。チェックを外したときに false でオーバーライドする必要があります。

4

3 に答える 3

7

まず<html:checkbox>、JSTL タグではなく Struts タグです。このタグは、チェックボックス タイプの標準 HTML 入力を生成するだけです。また、HTML チェックボックスは、チェックされている場合は値をパラメーター値として送信し、チェックされていない場合はパラメーターを送信しません。

したがって、フォーム フィールドのデフォルト値は true であるため、次のようになります。

  • チェックボックスがチェックされている場合、Struts によって true に設定されます。
  • チェックボックスがオフの場合、Struts によって何も設定されないため、デフォルト値の true が保持されます。

プロパティのデフォルト値はapproveItfalse にする必要があります。そうすれば、チェックボックスがオフの場合、正しいデフォルト値 (false) が保持されます。また、チェックボックスがオンの場合は true に設定されますが、これも正しいです。

于 2013-05-31T21:41:17.503 に答える
2

私は同じ問題を抱えていました。ブール変数が false に初期化された後も問題は解決しませんでした。

問題は私のスコープがsession.

スコープをrequestすべてに変更すると、期待どおりに機能します。

于 2015-08-14T20:52:40.470 に答える
2

属性にはvalue、タグによって使用される値が含まれ、checkbox状態がcheckedまたはチェックされていない場合は何もありません。

送信時に、チェックされたチェックボックスのみが渡されます。次に、Struts はそれらをキャッチし、対応する名前の Bean プロパティを設定します。

インラインまたはコンストラクターで値を初期化するcheckedと、Bean プロパティ値を設定することによってチェックボックスのみが更新されます。チェックされていない状態を更新することはできません。

したがって、フォームに入力する前に値を設定しないでください。値が設定されていない場合、Struts はその値をタグとして扱い、タグからfalse削除checkedします。これは、値をfalse明示的に設定することと同等です。

true値がチェックボックスの場合とは逆の動作で、チェックボックスまたはチェックされていない (属性なし) の状態に対応するのでnullはなく、trueまたはチェックボックスの状態に対応するなど、他の値の状態はありません。falsecheckedchecked

于 2013-06-01T21:59:55.660 に答える