Использование Grails / Groovy класса по ссылке - PullRequest
0 голосов
/ 03 февраля 2010

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

Вместо того, чтобы поддерживать код для контроллера для каждого домена, я хотел бы иметь один контроллер, который может присматривать за любым доменом для общих вызовов CRUD ... единственное отличие - это имя класса домена.

На примере класса домена Job & Note

Вместо

Job.get(id)
Job.list()
def instance = new Job(params)

Note.get(id)
Note.list()
def instance = new Job(params)

Я думал о

def someHandler = Job // configurable

someHandler.get(id)
someHandler.list()
def instance = new someHandler(params)

Первые два статических метода работают нормально (get, list), но создание нового экземпляра - нет. Любые указания относительно того, как лучше всего это сделать.

Приветствия

Ответы [ 2 ]

2 голосов
/ 03 февраля 2010

Вызовите конструктор по умолчанию, используя

def instance = someHandler.newInstance()

и конструктор для параметров, использующих

def instance = someHandler.newInstance(params)
0 голосов
/ 03 февраля 2010

Если вы недовольны скаффолдинговыми контроллерами / представлениями, которые Grails предоставляет по умолчанию, и хотите изменить их аналогичным образом для всех классов домена, лучшим подходом может быть простое редактирование шаблонов, которые используются для генерацииэти контроллеры / представления.

Вы можете сделать это, запустив скрипт grails install-templates.Это создаст несколько файлов в каталоге src/templates/scaffolding, каждый из которых определяет шаблон, используемый для создания артефакта скаффолдинга.

Измените эти шаблоны для создания необходимых контроллеров / представлений.Если вы уже запустили grails generate-all для каких-либо классов домена, вам нужно будет запустить его снова для этих классов, чтобы обновить существующие строительные леса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...