2014-05-23 50 views
1
getFieldError("user_name").rejectedValue 

如果我有一個字段作爲上述地方我給自己定的約束如下:的Grails:如何檢查字段值的有效性專門

user_name(blank: false, unique: true, email: true) 

我怎麼能在各種情況下以檢查是否有違規行爲明確在每種情況下自定義錯誤消息?目前,我有以下的,但是,只有當我嘗試用空字段提交表單工作在第一種情況:

def errorVal = createdUser.errors.getFieldError("user_name").rejectedValue 

     if (errorVal == null) 
      render(contentType: 'text/json') {["message": 'Username cannot be blank!']} 
     else if (errorVal == invalid) 
      render(contentType: 'text/json') {["message": 'Username must be an e-mail address!']} 
     else if (errorVal == unique) 
      render(contentType: 'text/json') {["message": 'Username already exists for picked institution!']} 

如果我嘗試把東西這是一種非現場測試第二種情況-email地址,我在控制檯收到此錯誤:

No such property: invalid for class: com.twc.fatcaone.AdminController 
+2

爲什麼採取這種方法?爲什麼不按框架的意圖使用框架來定製屬性文件中的錯誤消息?您可能需要重新閱讀以下內容:http://grails.org/doc/2.3.7/guide/single.html#validation,並瞭解如何設置自己的消息,特定於您的域/已驗證的類。然後,就像將錯誤消息收集到JSON結果一樣簡單。無需在代碼中進行自定義。 –

回答

1

像其他人張貼的偉大的答案,我會建議以下內置的框架準則,但是,如果你願意,你可以使用EmailValidator類檢查有效的電子郵件地址。唯一性已經爲您檢查,但是如果您有其他自定義條件,那麼您可以使用AND根據您的不同標準搜索數據庫,如果結果是肯定的,那麼您知道它不是唯一的。再次,這可能並不總是最好的解決方案。