Я в настоящее время пытаюсь указать пользовательские сообщения об ошибках в чашах Грааля для ограничений по умолчанию, но до сих пор все, что я возвращаю, является сообщением об ошибке по умолчанию.
Я знаю, что должен отредактировать grails-app/i18n/messages.properties файл
Если я изменю следующее сообщение кодов ошибок по умолчанию, то оно правильно отобразит новое сообщение об ошибке
default.blank.message=Property [{0}] of class [{1}] cannot be blank
Однако это не то, что я пытаюсь сделать. Я нуждаюсь в большем количестве детализированного сообщения об ошибке и имею больше чем одно поле, которое может быть пробелом и т.д., Что я хотел бы смочь сделать, будет, отобразит пользовательские сообщения для каждого поля в классе
package com.mycompany.myapp
class Test{
String name
def constraints = {
name(nullable:false, blank:false)
}
}
(после кодов, добавленных к концу messages.properties)
test.name.blank=Name cannot be blank
test.name.nullable=Name cannot be nullable
Согласно документации чаш Грааля это должно работать правильно, или с или без имени пакета - className.propertyName.blank
grails.org/doc/latest/ (ограничительный раздел) и (разделяют 7.4 - проверка и интернационализация),
Я попробовал весь comnbinations, о котором я могу думать, но он всегда отображает пользовательское сообщение
Я также попытался установить чаши Грааля i18n, обрабатывает плагин по шаблону
http://www.grails.org/I18n+Templates+Plugin
который генерировал коды ошибок автоматически для меня. Я добавил новые коды ошибок в конец существующего messages.properties файла, но я все еще получаю сообщения об ошибках по умолчанию.
Однако было что-то другое с кодами ошибок, которые были сгенерированы плагином.
вместо формата, указанного в документе чаш Грааля - test.name.null =......, это автоматически сгенерировало тестовое name.null.error=Custom сообщение
Я также попытался удалить сообщения об ошибках по умолчанию полностью, но они все еще отображены
Если бы кто-либо испытал эту проблему прежде, я ценил бы любую справку, которую любой может дать мне
Заранее спасибо
put def messageSource (в контроллере или сервисе)
item.errors?.allErrors?.each{
println messageSource.getMessage(it, null)
};
Я также нашел хорошую ссылку, которая объясняет это лучше
http://johnrellis.blogspot.com/2010/02/retrieve-grails-domain-errors-from.html
Я использую полные имена классов в своих messages.properties
com.shareyourlove.User.password.blank=Some custom message
Возможно, ваши ограничения не статичны - это должно быть указано как "static constraints = {..."
Также обратите внимание, что значение по умолчанию, допускающее значение NULL, равно false, поэтому вам не нужно это указывать.