我想在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注释不会做任何事情(没什么大惊喜)。
答案 0 :(得分:9)
只需在trait中定义方法定义@Action注释,这将使此方法作为控制器的Action(当特征实现时)
import grails.web.Action
trait ColumnSelectionController {
@Action
def selectColumns() {
//Do something here
}
}
希望这有帮助。