2009-09-07 32 views
2

我message.properties包含此默認:Typemismatch與國際化的標籤,而不是屬性名稱

typeMismatch.java.lang.Double =屬性{0}必須是有效的數字

佔位符{0}替換爲屬性名稱。我想使用這樣的前端使用的標籤:

typeMismatch.java.lang.Double = Property {wonderful label here}必須是有效的數字。

我第一次嘗試:

typeMismatch.java.lang.Double =屬性$ {消息(代碼: '0')}必須是有效的數量。

不工作,因爲沒有'0'信息。文件目前尚不清楚。 任何人都有這個想法嗎?

編輯:

嗯,我可以寫一個錯誤消息像這樣每一個屬性:

typeMismatch.Book.booknumber =房產Booknumber必須是一個有效的數字。

但是,這似乎是一個很多額外的工作......

回答

2

所以我做了一個小錯誤..它是達姆容易,現在......我會在這裏回答。也許有人會碰到這樣的:

我的錯誤是:

typeMismatch.java.lang.Double=Property {0} must be a valid number 

{0}由屬性名稱取代。

背後的原因是Grails API rendererror正在尋找正確的類名和屬性。

例如:

我的班級被命名爲圖書和財產的數目。

在我的消息屬性:

book.number = Booknumber 

對於國際化的一切工作正常,但是當錯誤消息有發生就說明如下:

"Property number must be a valid number." 

在消息屬性正確的版本:

Book.number = Booknumber 

適用於我現在。 :-)

+0

對於我來說,我需要做到這一點(即「.label」結束吧): com.my.pkg.MyDomainClass.title.label =自定義標題 com.my.pkg.MyDomainClass.label =我的自定義域課程標題 – mlathe 2011-01-25 22:07:24

1

太棒了!非常感謝您的文章! 當它一開始並不適合我時,我花了一些時間才意識到我需要在屬性名稱前面使用完全限定的類名稱。所以語法是:

package.ClassName.propertyName=Label 

非常有用!再次感謝! 鋁

+0

謝謝你的回答。 – bastianneu 2009-09-20 08:34:18

0

Spring的數據綁定錯誤校驗( 「{0}」 必須是有效的數字)要fullClassName.fieldName 短類名和/或.label無法識別,看org.springframework.validation.DefaultBindingErrorProcessor#getArgumentsForBindError

Grails的驗證(「{0 }必須是有效的電子郵件地址「)要FQClassName.fieldName.labelclassPropertyName.fieldName.label 添加.label是必須的,從org.codehaus.groovy.grails.validation.AbstractConstraint#rejectValueWithDefaultMessage

爲明顯因此,你需要同時FQN/shortClassName.attributeName.labelFQN.attributeName在兩次驗證中獲得相同的可翻譯的人性化名稱。其他

http://jira.grails.org/browse/GRAILS-8369

0

一個提示,萬一它有助於旁邊的人,如果你越來越像一個不友好的錯誤消息「屬性producer.employeeCount必須是有效的數字」嘗試加入簡稱producer.employeeCount財產您messages.properties文件,因爲這樣的:

producer.employeeCount =員工數

至少在Grails的2.0.0,這將導致一個更友好的消息:「員工的財產編號必須是有效的數。」

使用完全限定的類名稱(例如com.example.domain.Client.employeeCount),最後有或沒有「.label」不適合我。

希望這可以幫助別人。