1

私のアプリケーションでは、すべてのFooにカテゴリがあります。Foo.Categoryは、クラスFooの内部列挙型です。指定されたフォームページでFooを作成する場合、ユーザーは列挙型に入力されたドロップダウンからカテゴリを選択します。ただし、この選択はオプションです。

さて、別のページで、Fooを名前とカテゴリで検索できるようにしたいと思います。この検索フォームにCheckBoxMultipleChoice<Foo.Category>も同じ内部列挙型が入力されています。チェックされた値はDAOに送信され、DAOは「wherecategoryin」句を使用してデータベースにクエリを実行します。

チェックボックスに「空白/なし」の選択肢を追加したいので、DAOに送信されたときに、チェックされている場合は「またはカテゴリがnullの場合」をクエリに追加できます。私のチェックボックスは列挙型に入力されているので、これも可能ですか?

編集:これが重要かどうかはわかりませんが、私の列挙型にはSHORTNAMEで指定された値がありますが、それぞれに文字列LongerAndMoreDescriptiveNameがあり、列挙型はtoString()この値を返すようにオーバーライドします。SHORTNAMEは私がデータベースに保存し、where句で使用するものですが、LongerはUIに表示されるものです。CheckBoxMultipleChoiceに変更して空白の選択肢を追加することを簡単に考えていましたが、値間の不一致をどのように解決しますか?

4

1 に答える 1

1

直接はできません。CheckBoxMultipleChoice(DropDownChoiceのように)には「値なし」の選択などはありません。何も選択されていない場合、コンポーネントのモデルはnullになるためです。

私はあなたが2つのオプションがあると思います:

1)定数Category.NONEをFoo.Category列挙型に追加し、ユーザーがカテゴリを選択するドロップダウン選択でそれに応じて処理します。

2)Foo.Category定数のラッパークラス(Optional <Foo.Category>など)を作成し、Foo.Category定数を直接使用する代わりにCheckBoxMultipleChoiceで使用します。オプションの<Foo.Category>のインスタンスは、対応するFoo.Category定数を持つことも持たないこともできるため、選択モデルの処理が適切である必要があります。

于 2012-11-16T11:38:33.410 に答える