Делаем название модели читабельным в Groovy / Grails - PullRequest
1 голос
/ 17 октября 2011

Есть ли способ сделать имя класса домена читаемым человеком в Groovy / Grails?Например, у меня может быть класс с именем LibraryBook, и в представлениях приложения он будет отображаться как «Создать LibraryBook».Можно ли заставить Grails показывать это как «Создать библиотечную книгу»?

Ответы [ 2 ]

4 голосов
/ 17 октября 2011

GrailsDomainClass имеет свойство naturalName, которое вы можете использовать. Вы также можете использовать GrailsNameUtils.getNaturalName () для имен свойств.

Тем не менее, он не локализуется.

Обычно упоминается @tim_yates, добавляйте сообщения типа className.label = Class Name и className.propertyName.label=Property Name в messages.properties.

3 голосов
/ 17 октября 2011

Если вы посмотрите на верхнюю часть вашего grails-app/views/libraryBook/create.gsp файла, вы увидите что-то вроде:

    <g:set var="entityName" value="${message(code: 'libraryBook.label', default: 'LibraryBook')}" />

Это показывает, что вы можете установить свойство сообщения libraryBook.label для переопределения имени по умолчанию LibraryBook.Это свойство должно быть установлено в файле grails-app/i18n/message.properties.Документация для этого может быть найдена здесь .

В качестве интересного (а не рекомендуемого лучшего метода) вы можете изменить стандартные шаблоны лесов Grails.Сначала необходимо установить шаблоны с помощью:

grails install-templates

Затем вы можете отредактировать файл src/templates/scaffolding/create.gsplist.gsp и т. Д.) И изменить строку:

<g:set var="entityName" value="\${message(code: '${domainClass.propertyName}.label', default: '${className}')}" />

to

<g:set var="entityName" value="\${message(code: '${domainClass.propertyName}.label', default: '${className.replaceAll(/\B[A-Z]/){ " $it" }}')}" />

Как видите, этот код:

className.replaceAll(/\B[A-Z]/){ " $it" }

Принимает имя класса CamelCase и заменяет все заглавные буквы (кроме первой) на букву, следующую запробел.

Затем, когда вы вызываете generate-views или generate-all, у вновь созданного gsp будет это имя по умолчанию с пробелами в нем

...