2010-02-03 6 views
0

J'essaie de créer mon propre contrôleur CRUD dans les grails pour les choses que l'échafaudage ne fera pas. Au lieu de maintenir le code pour un contrôleur pour chaque domaine, j'aimerais avoir un contrôleur qui peut s'occuper de n'importe quel domaine pour les appels CRUD génériques .. comme la seule différence est le nom de classe de domaine.Utilisation d'une classe de grails/groovy par référence

En utilisant l'exemple de classe de domaine d'emploi & Remarque

Au lieu de

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

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

Je pensais

def someHandler = Job // configurable 

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

Les deux premières méthodes statiques fonctionnent très bien (obtenir, liste) mais créer une nouvelle instance ne fonctionne pas. Tout pointeur sur la meilleure façon de procéder.

Vive

Répondre

2

Appelez le constructeur par défaut en utilisant

def instance = someHandler.newInstance() 

et le constructeur pour params en utilisant

def instance = someHandler.newInstance(params) 
+0

Cela a fonctionné! .. Merci –

0

Si vous n'êtes pas satisfait avec les contrôleurs/vues échafaudés que Grails fournit par par défaut, et que vous souhaitez les modifier de la même manière pour toutes les classes de domaine, une meilleure approche consiste à modifier simplement les modèles utilisés pour générer ces fichiers. ntrollers/vues. Pour ce faire, exécutez le script grails install-templates. Cela créera un certain nombre de fichiers dans le répertoire src/templates/scaffolding, chacun définissant le modèle utilisé pour générer un artefact échafaudé.

Modifiez ces modèles pour créer les contrôleurs/vues souhaités. Si vous avez déjà exécuté grails generate-all pour toutes les classes de domaine, vous devrez l'exécuter de nouveau pour que ces classes mettent à jour l'échafaudage existant.