Проблема Grails с пользовательскими сообщениями об ошибках

Я в настоящее время пытаюсь указать пользовательские сообщения об ошибках в чашах Грааля для ограничений по умолчанию, но до сих пор все, что я возвращаю, является сообщением об ошибке по умолчанию.

Я знаю, что должен отредактировать 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 сообщение

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

Если бы кто-либо испытал эту проблему прежде, я ценил бы любую справку, которую любой может дать мне

Заранее спасибо

13
задан Burt Beckwith 14 July 2010 в 22:38
поделиться

3 ответа

put def messageSource (в контроллере или сервисе)

item.errors?.allErrors?.each{ 
println  messageSource.getMessage(it, null)
};

Я также нашел хорошую ссылку, которая объясняет это лучше

http://johnrellis.blogspot.com/2010/02/retrieve-grails-domain-errors-from.html

18
ответ дан 1 December 2019 в 21:36
поделиться

Я использую полные имена классов в своих messages.properties

com.shareyourlove.User.password.blank=Some custom message
0
ответ дан 1 December 2019 в 21:36
поделиться

Возможно, ваши ограничения не статичны - это должно быть указано как "static constraints = {..."

Также обратите внимание, что значение по умолчанию, допускающее значение NULL, равно false, поэтому вам не нужно это указывать.

0
ответ дан 1 December 2019 в 21:36
поделиться