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()Java 方法(用于第二个下拉菜单),该方法正确地将枚举返回为String.

从前面的 JSP 中,在构建 SQL 查询之后,我在查询中得到以下 where 子句(例如,我从第一个下拉菜单中选择“ITEM1”,从第二个下拉菜单中选择“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 回答