2010-10-26 67 views
3

我在我的表单上有一个DropDownChoice组件,当表单被提交并且DropDownChoice中没有选择任何内容时,返回的默认值是“-1”。有没有办法改变这种行为?DropDownChoice - 没有选择,值-1?

+0

这对我来说非常有意义。你期望什么?为什么? – 2010-10-26 10:31:34

+0

为什么不检查表单提交如果值为-1,那么只需提供您的默认值... – Gage 2010-10-26 12:12:21

+0

如果您的下拉菜单中的某个值为“-1”,该怎么办? – 2010-10-26 20:22:26

回答

2

此行为是由一个恒定场

protected static final String NO_SELECTION_VALUE = "-1"; 
AbstractSingleSelectChoice

,这是DropDownChoice类的超类的控制。

您不能在子类中更改此值,因此为了更改所使用的值,您必须找到此常量的用法并覆盖使用它的方法以使用其他默认值。

虽然这很有可能,但这样做会很危险。我知道你必须至少覆盖getDefaultChoice(final Object selected)getModelValue()

为什么你想这样做?它的目的是一个明智的价值。

也许有更好的方法来完成您的潜在需求。

+0

我想知道为什么会发生这种情况/背后是什么。我不使用索引 - 每个选项都映射到数据库中的一条记录,并且我重写了getIdValue(Object,Int)方法,以便它返回相应对象的ID。 id不应该是负数,但由于它们是Long类型的,假设它可能发生。这就是为什么我更喜欢当没有选择任何东西时我可以返回null。 – 2010-10-26 12:29:09

+0

@John - 如果这是一个真正的担心,通过修改getIdValue可以更容易地处理返回修改的ID,该ID包含区分值。由于getIdValue返回一个字符串,所以只需将某些内容附加到ID即可轻松完成此操作。 – 2010-10-27 09:57:27

1

钩到beforeSubmit,并改变你想要的。 我认为有这样的价值是好的,因为第一个元素是0,notting的意思是-1。