Je cherche des moyens de nettoyer le code de mon contrôleur Grails. Dans plusieurs contrôleurs, j'ai plus ou moins la même logique
- obtenir l'objet
- vérifier s'il existe
- etc.
Existe-t-il une suggestion pour que les actions du contrôleur réutilisent un code commun ?
--- solution ---
Toutes les réponses à cette question ont contribué à la solution que nous avons mise en œuvre.
Nous avons créé une classe qui est utilisée dans nos contrôleurs en utilisant l'approche Mixin. L'une des méthodes exposées par le mixin est la méthode withObject. Cette méthode prend le nom de domaine du contrôleur et l'utilise comme base pour la méthode. Ce comportement peut bien sûr être modifié !
def withObject(object=this.getClass().getName()-"Controller", id="id", Closure c) {
assert object
def obj = grailsApplication.classLoader.loadClass(object).get(params[id])
if(obj) {
c.call obj
} else {
flash.message = "The object was not found"
redirect action: "list"
}
}
Toutes les réponses ont donc contribué à la solution ! Merci beaucoup !