Я пытаюсь использовать Grails Scaffolding, чтобы быстро объединить приложение CRUD вокруг некоторых устаревших таблиц базы данных (см. этот предыдущий вопрос StackOverflow для саги до сих пор). Теперь у меня больше нет наихудшей проблемы, и у меня есть работающее приложение CRUD, но осталась одна проблема с общим удобством использования.
Многие из моих объектов домена имеют ассоциации внешнего ключа с другими объектами домена. Контакт
принадлежит владельцу
и т. Д.
Однако на страницах CRUD для контакта
я не хочу видеть фактический ключ id
для владельца
... потому что это не " не значат что-нибудь для пользователей-людей. Я хочу, чтобы вместо этого на экране отображалось более удобное для человека значение Owner.name
.
Представления «список» и «показ» явно имеют дело со всеми атрибутами в автоматически сгенерированном коде представления, и у меня есть возможность настроить этот код для управления тем, что представлено. Однако в представлениях «создание» и «редактирование» не перечислены все атрибуты. Вместо этого эти представления выполняют своего рода вызов библиотеки тегов Grails, подобный этому:
...
...
Этот вызов, по-видимому, автоматически определяет во время выполнения, что представляют собой поля, и принимает собственные решения о том, как их отображать. Для объектов домена, имеющих ассоциации, он принимает плохое решение отображать бессмысленный идентификатор связанного объекта, а не более удобный для человека атрибут.
Есть ли «простой» (или, по крайней мере, «передовой») способ изменить способ отображения полей в представлении «редактировать» или «создавать»? Конечно, это обычная проблема, когда Scaffolding используется с объектами домена, имеющими ассоциации.