我尝试本地化来自Domain类的错误消息。这可以使用默认错误消息,例如:
default.blank.message =属性[{0}]不能为空
和本地化的属性名称,例如:
customer.address.label =客户地址
“客户”是我的域类,地址是其属性。
我的问题是我无法本地化某些属性,因为我需要特定的错误消息。 例如:
has.to.be.a.number =属性[{0}]必须是数字
contingent.size.label =或有大小。
但我得到的信息是“Property [size]必须是一个数字”而不是“Property [Contingent size]必须是一个数字”。
我无法本地化的消息如下:
<小时/> 我在其他一些域类中添加了一些其他示例,但这些示例也不起作用
package cz.quanti.spaportal.touristOffice
import ...
class TouristOffice {
String customerNumber
int minimalContingent
Address address
User user
ContactPerson contactPerson
static hasMany = [contingents: Contingent]
static constraints = {
customerNumber(unique:true, nullable: true, blank: true)
user(nullable: true, blank: true)
contactPerson(nullable: false)
minimalContingent(min: 0)
address(nullable: false)
}
只有“minimalContingent”未本地化:(邮件已本地化,而最小属性不是) 属性[minimalContingent]必须是一个数字。
答案 0 :(得分:4)
如果验证消息有问题,您可以随时使用实例上的errors
集合检查验证错误的代码。
Customer c = ...
c.validate()
c.errors.each { println it }
c.errors.getFieldError("address").codes.each { println it }
c.errors.getFieldError("address").defaultMessage
编写单元测试以检查代码以本地化消息。
答案 1 :(得分:2)
确保您在定义中使用域类包。还要检查你的大小写;我不确定它是否有所作为,但我使用标签的成功messages.properties
看起来类似于以下内容:
// messages.properties
com.example.Customer.address.label=Customer address
com.example.Contingent.size.label=Contingent size
// or if you're using the default package
Customer.address.label=Customer address
...
<小时/> 更新后,你能澄清一下吗?您的
messages.properties
:中是否有以下内容?
cz.quanti.spaportal.touristOffice.TouristOffice.minimalContingent.label=...
如果没有,如果添加它会起作用吗?
答案 2 :(得分:1)
我认为属性的整个路径(最后没有“label”)应该对你有用。看起来像这样:
com.example.Customer.homeAddress=Customer address
请记住在需要的地方使用小写和大写!