在Grails控制器中使用Groovy特征

时间:2015-03-04 17:29:11

标签: grails groovy

我想在Grails控制器中使用Groovy特性,如下所示:

trait ColumnSelectionController {
    def selectColumns() {
        //Do something here
    }
}

class MyController implements ColumnSelectionController {
    def index() {
        //Calculate list model
    }
}

然而,当我在Grails中运行它时," selectColumns"行动不可见,我得到了Grails的404回复。我怀疑我需要对特征做一些事情,以便在其中定义的方法被识别为实现类中的动作。有谁知道那可能是什么?

编辑1:

更多信息:特征在src / groovy中定义,而不是在grails-app / controllers中定义,因此它不被定义为Artefact。

编辑2:

此外,如果我将特征更改为类,使用@Artefact注释标记它并更改MyController以扩展此类,一切都按预期工作。尝试在特征上使用@Artefact注释不会做任何事情(没什么大惊喜)。

1 个答案:

答案 0 :(得分:9)

只需在trait中定义方法定义@Action注释,这将使此方法作为控制器的Action(当特征实现时)

import grails.web.Action

trait ColumnSelectionController {

  @Action
  def selectColumns() {
     //Do something here
  }
}

希望这有帮助。