2011-07-15 2 views
0

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

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

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

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

ответ

0

Обратите внимание, что есть и третий параметр, класса 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}] 
+0

Не повезло, я попробовал ваше предложение, и оно отобразит значения свойств объекта, а не имена ярлыков. Например, 'Свойство [10] должно быть больше значения [5000]' –

+0

oh, вам просто нужно, чтобы оно было 'Property [Max. delay (ms)] должно быть больше значения [Мин. delay (ms)] "', без значений? Так почему бы вам просто не написать его как есть? –

+0

Я пытаюсь отделить метку свойства minDelay от любых других сообщений, ссылающихся на нее. Это также понадобится для других ситуаций где сообщение i18n должно включать в себя другие сообщения. –

Смежные вопросы