条纹和枚举下拉菜单中的Java类



当使用带有Java枚举值的下拉菜单时,Stripes返回某种二进制内容,而不是应该表示枚举值的实际字符串。

在更多的细节,请看看下面两个下拉菜单如何转换在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'��~r2package.to.the.enumerate.AnotherEnumToChoseEnumxrjava.lang.EnumxptENUM1' 

我没有成功地注释掉<stripes:option value="">I want them all</stripes:option>,因为我认为它可能与<stripes:options-enumeration发生冲突,但这仍然不起作用。

另一方面,如果我删除这些二进制设置,我直接在SQL where子句中使用another_enum_to_chose = 'ENUM1',那么我将从数据库中获得我所期望的记录。

提示吗?

这个问题与我正在使用的Enumerate Java类有关。为了获得枚举值,我现在使用标准文档java.lang.Enum中描述的name()方法。现在使用name(),我100%确定我得到的是String而不是任何其他类型/对象。

最新更新