Grails i18n ярлык перекрестные ссылки? - PullRequest
0 голосов
/ 15 июля 2011

Можно ли включить значения свойств i18n в другие интернационализированные сообщения в grails?

У меня есть класс домена, содержащий 2 свойства, «minDelay» и «maxDelay», и я хочу написать интернационализированное сообщение, ссылающееся на метки обоих.

Я написал собственный валидатор (maxDelay должен быть больше или равен minDelay):

maxDelay(validator:{
    value, reference ->
    if (value < reference.minDelay) {
        return ['custom.error', it]
    } else {
        return true;
    }
  })

при сбое я печатаю свойство stub.maxDelay.custom.error.

В моих messages.properties есть свойства:

stub.maxDelay.custom.error=Property [{0}] must be bigger than value of minDelay
stub.minDelay.label=Min. delay (ms)
stub.maxDelay.label=Max. delay (ms)

Как я могу использовать значение свойства stub.minDelay.label вместо статического текста? Сообщение об ошибке должно выглядеть следующим образом:

"Property [Max. delay (ms)] must be bigger than value of [Min. delay (ms)]"

Я пытался ссылаться на него как {stub.minDelay.label} или ${stub.minDelay.label}, но все, что я получаю, это ошибка синтаксического анализа из grails.

Возможно, я подхожу к этому неправильно, возможно ли будет ввести метку через числовой параметр в валидаторе? Как, например, если сообщение об ошибке было:

stub.maxDelay.custom.error=Property [{0}] must be bigger than value of [{1}]

1 Ответ

0 голосов
/ 15 июля 2011

Обратите внимание, что есть и третий параметр класса org.springframework.validation.Errors, который можно использовать для тонкой настройки сообщений об ошибках, например:

maxDelay(validator:{ value, reference, errors ->
    if (value < reference.minDelay) {
        errors.rejectValue('maxDelay', 'stub.maxDelay.custom.error', [value, obj.minDelay], 'oops')
    }
  })

, он будет работать для сообщения:

stub.maxDelay.custom.error=Property [{0}] must be bigger than value of [{1}]
...