我可以在由枚举支持的Wicket 1.5 CheckBoxMultipleChoice中添加“空白/不适用”选项吗?

时间:2012-11-15 16:11:49

标签: checkbox wicket-1.5

在我的应用程序中,每个Foo都有一个类别。 Foo.Category是Foo类中的内部枚举。在给定表单页面上创建Foo时,用户从键入枚举的下拉列表中选择一个类别。但是,这个选择是可选的。

现在,在另一个页面上,我希望能够按名称搜索Foo,也可以按类别搜索。此搜索表单的CheckBoxMultipleChoice<Foo.Category>也键入相同的内部枚举。已检查的值将发送到DAO,DAO使用“where category in”子句查询我的数据库。

我想在复选框中添加“Blank / None”选项,这样当发送到DAO时,我可以在查询中添加“或where category is null”(如果选中)。由于我的复选框是在枚举中输入的,这是否可能?

编辑:不确定这是否重要,但我的枚举具有SHORTNAME指定的值,但每个都有一个字符串LongerAndMoreDescriptiveName,并且枚举重写toString()以返回此值。 SHORTNAME是我存储在数据库中的,并在where子句中使用,但是Longer是UI上显示的内容。我曾经简要地想过要更改为CheckBoxMultipleChoice并添加空白选项,但是如何解决值之间的差异呢?

1 个答案:

答案 0 :(得分:1)

直接不可能。 CheckBoxMultipleChoice中没有“无值”选项(如在DropDownChoice中),因为当没有选择任何内容时,组件的模型为null。

我认为,您有两种选择:

1)将常量Category.NONE添加到Foo.Category枚举中,并在用户选择类别的下拉选项中相应地处理它。

2)为Foo.Category常量创建一个包装类(类似Optional&lt; Foo.Category&gt;),并在CheckBoxMultipleChoice中使用它,而不是直接使用Foo.Category常量。可选&lt; Foo.Category&gt;的实例将能够拥有或不拥有相应的Foo.Category常量,因此您对选择模型的处理应该是合适的。