2013-07-30 74 views
1

得到一個在這裏我一直在思考一整天。可選數據與jsr 303

我有一個普通的Java Bean,它是一個String屬性,可以合法地爲null或空,但是如果它不爲空或空,那麼我有一個正則表達式來驗證它是一個有效的浮點數。

我已經安排我的註釋從而

@Pattern(regexp = VALID_FLOAT, message = "Incorrect format") 
private String elevation; 

問題是,當該值爲null或空它仍然驗證失敗!與「錯誤的格式」

任何人都可以在這裏幫忙嗎?頁面上預先感謝

+0

你可以顯示'VALID_FLOAT'模式嗎? – mthmulders

+0

順便說一下,JSR 303規範說'null'元素被認爲是有效的...... – mthmulders

+0

@mthmulders模式是一種無關緊要的問題,問題是如果字符串爲空或爲空,如何停止驗證嘗試。如果你是在一個有效的浮動模式之後,我可以讓你有它,雖然 – Beer0

回答

2

JSR-303 spec州16

雖然不是強制性的,它被認爲是一個很好的做法,從沒有 空約束驗證分裂核心約束驗證(例如,@Email約束將返回空物體真實的,即不會 照顧@NotNull驗證)

所以@Pattern應該是有效的字符串的空值。然後你的VALID_FLOAT模式應該處理空字符串,或者你需要明確聲明如​​。

但是我認爲null和空字符串的歧義並不是一個好習慣。你應該決定一個。

+0

謝謝你,在你的回覆和mthmulders的回覆之後,所有這些都變得更加清晰。 – Beer0