Локализация проверочных сообщений (ошибок) в Grails - PullRequest
0 голосов
/ 12 января 2011

Я пытаюсь локализовать сообщения об ошибках из классов Домена.Это возможно с сообщениями об ошибках по умолчанию, например:

default.blank.message = Свойство [{0}] не может быть пустым

и именами локализованных атрибутов, например:

customer.address.label = Адрес клиента

Где «Клиент» - это класс моего домена, а адрес - его атрибут.

Моя проблемачто я не могу локализовать некоторые атрибуты, потому что мне нужны конкретные сообщения об ошибках.Например:

has.to.be.a.number = Свойство [{0}] должно быть числом

contingent.size.label = Условный размер.

Но я получаю сообщение «Свойство [размер] должен быть числом» вместо «Свойство [Условный размер] должно быть числом».

Сообщения, которые я не могу локализовать,следующее:

  • Свойство [{0}] должно быть числом
  • Свойство [{0}] должно быть действительной датой // Я не могу использовать g: datePickerв этом контексте


Я добавляю еще один пример с другим классом домена, который также не работает
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] должно быть числом.

Ответы [ 3 ]

4 голосов
/ 12 января 2011

Если у вас возникли проблемы с сообщениями проверки, вы всегда можете проверить коды ошибок проверки, используя коллекцию errors в экземпляре.

Customer c = ...

c.validate()

c.errors.each { println it }
c.errors.getFieldError("address").codes.each { println it }
c.errors.getFieldError("address").defaultMessage

Написать модульный тест, чтобы проверить коды для локализациисообщения.

2 голосов
/ 12 января 2011

Убедитесь, что вы используете пакет классов домена в ваших определениях.Также проверьте свою капитализацию;Я не уверен, имеет ли это значение, но мои успешные 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=...

Если нет, то работает ли оно, если вы добавите его?

1 голос
/ 17 января 2011

Я думаю, что весь путь к атрибуту (без «label» в конце) должен работать на вас. Выглядит так:

com.example.Customer.homeAddress=Customer address

не забудьте использовать строчные и прописные буквы там, где они нужны!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...