Я ищу способы очистки моего кода контроллера Grails. В разных контроллерах я более или менее придерживаюсь той же логики.
- получить объект
- проверить, существует ли он
- и т.д..
Есть ли способ, с помощью которого действия контроллера повторяют общий код?
--- решение ---
Все ответы на вопрос внесли вклад в решение, которое мы внедрили.
Мы создали класс, который используется в наших контроллерах с использованием подхода Mixin. Одним из методов, который предоставляет mixin, является метод withObject. Этот метод принимает имя домена из контроллера и использует эту базу для этого метода. Конечно, это поведение можно переопределить!
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"
}
}
Таким образом, все ответы способствовали решению! Большое спасибо!