关于GRAILS2.0的Controller继承问题

父类放在src/groovy里面发现以下问题:

  1. 父类的闭包可以继承给子类,并注册为action
  2. 父类的public void method1(){} 和 def method2{} 会继承给子类,但是不会注册为action
  3. 父类的有一个属性protected List keywordFilter = []  并有一个方法protected prepareParams(){}和一个闭包 def c1 = {}分别会输出这个属性。在子类里面覆盖该属性,发现: 继承的prepareParams里面输出的this.keywordFilter 仍然是父类的,而闭包则是子类的.

想请问, 第2和第3个问题是bug么? 如何解决?

目前,我们使用的Grails还只是1.3.7,尚未使用2.0,因此回答也只能依据我们的理解和文档。

第一点应该没有什么问题了,在此不提。

第2、3点,我没看出来有什么问题。你先试一试把你的父类放到controller目录中试试看吧,另外,再grails clean之后再编译试试看。

By 匿名用户 - Posted on 11 九月 2011

已解决

已经解决了.

1.第1,2点官方说不是bug,不在Controller包的都不算,http://stackoverflow.com/questions/7135623/grails-abstractcontrollers-public-method-dont-register-to-sub-controller

2.第3点,是一个低级错误,我在父类写了protected List keywordFilter = [] ,在子类里面写了protected List keywordFilter = ['name'], 忘了属性是不能覆盖的,直接在子类里面赋值即可.