2010-02-03 3 views
0

Я пытаюсь создать свой собственный контроллер CRUD в grails для вещей, которые строительные леса не будут делать.Использование класса grails/groovy по ссылке

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

Используя пример класса домена Работа & Примечание

Вместо

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) 

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

Приветствия

ответ

2

вызов конструктора по умолчанию с помощью

def instance = someHandler.newInstance() 

и конструктор Params с помощью

def instance = someHandler.newInstance(params) 
+0

Это сработало! .. Спасибо –

0

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

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

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

Смежные вопросы