2010-10-26 45 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。