0

Java 列挙でドロップダウン メニューを使用すると、Stripes は、列挙を表す実際の文字列ではなく、ある種のバイナリ コンテンツを返します。

詳細については、次の 2 つのドロップダウン メニューが SQL クエリでどのように変換されるかを確認してください。

<stripes:select name="firstDropDown" id="firstDropDown">
   <stripes:option value="">All</stripes:option>
   <stripes:option value="ITEM1">First item</stripes:option>
   <stripes:option value="ITEM2">Second item</stripes:option>
</stripes:select>

<stripes:select name="anotherEnumToChose" id="anotherEnumToChose">
   <stripes:option value="">I want them all</stripes:option>
   <stripes:options-enumeration enum="package.to.the.enumerate.AnotherEnumToChoseEnum" label="label" />
</stripes:select>

Stripes によると、getLabel()その列挙をString.

以前の JSP から、SQL クエリを作成した後、クエリで次の where 句を取得しています (例として、最初のドロップダウン メニューから "ITEM1" を選択し、2 番目のドロップダウン メニューから "ENUM1" を選択します)。 :

and     table.first_drop_down ='SMS' 
    and     another_enum_to_chose=_binary'��\0~r\02package.to.the.enumerate.AnotherEnumToChoseEnum\0\0\0\0\0\0\0\0\0\0xr\0java.lang.Enum\0\0\0\0\0\0\0\0\0\0xpt\0ENUM1' 

<stripes:option value="">I want them all</stripes:option>と衝突した可能性があると思ったので、コメントアウトに失敗しました<stripes:options-enumerationが、これはまだ機能していません。

一方、これらのバイナリ設定を削除しanother_enum_to_chose = 'ENUM1'、SQL where 句で直接使用すると、データベースから期待するレコードを取得できます。

ヒントはありますか?

4

1 に答える 1

0

この問題は、私が使用していた Enumerate Java クラスに関連していました。列挙値を取得するためにname()、標準ドキュメントに記載されている方法を使用しますjava.lang.Enum。今使用すると、他のタイプ/オブジェクトではなくname()を取得していることを 100% 確信しています。String

于 2013-03-15T12:30:32.300 に答える