2011-10-04 62 views
1

我想将子类中的某些操作映射到其超类,但我无法弄清楚。下面的示例...将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) 
    } 
} 

对此问题的任何建议?谢谢。

+0

它是如何工作的?除此之外,除非您在子类中重新定义aAction1/2,否则不需要指定super。你继承了定义。 – codelark

+0

我得到了实例化异常。 – ekawas

+0

另外,如果我删除游泳,并使其陷入aAction2,我会在sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30)异常'java.lang.InstantiationException \t' – ekawas

回答

0

所以事实证明,它没有工作,因为参数稍有不同。它似乎按预期工作。如果您遇到问题,请确保任何继承类的参数与父级完全相同。

相关问题