Сделать контроллеры Grails более DRY?

Я ищу способы, как очистить код контроллера 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"
    }
}

Итак, все ответы способствовали решению проблемы! Большое спасибо!

11
задан Marco 28 November 2011 в 14:51
поделиться