сопоставление действия Grails с родительским контроллером

Я хотел бы сопоставить некоторые действия в дочернем классе с их суперклассом, но я не могу понять это. Пример ниже...

abstract class A {
    abstract def foo()

    def aAction1 = {
       // do something
       render(view: '/someView')
    }
    def aAction2 = { 
       SomeObject someObject ->
       // do something
       render(view: '/someView2')
    }
}

class B extents A {
    def foo() { return "Hello World" }

    # map to parent action    
    # works fine
    def jump = super.&aAction1
    # doesnt work ... Why? and can I make it work?
    def swim = { SomeObject someObject ->
       super.aAction2(someObject)
    }
}

Любые идеи по этому поводу? Спасибо.


person ekawas    schedule 04.10.2011    source источник
comment
Как это не работает? Кроме того, если вы не переопределяете aAction1/2 в дочернем классе, вам не нужно указывать super. Вы наследуете определения.   -  person codelark    schedule 05.10.2011
comment
Я получаю исключения инстанцирования.   -  person ekawas    schedule 05.10.2011
comment
Кроме того, если я удаляю плавание и позволяю ему попасть в действие2, я получаю исключение java.lang.InstantiationException at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30)   -  person ekawas    schedule 05.10.2011
comment
Получается, что это не сработало, потому что параметры были немного другими. Кажется, он работает так, как ожидалось.   -  person ekawas    schedule 07.10.2011


Ответы (1)


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

person ekawas    schedule 17.10.2011