如何在grails框架中调用一个类方法到另一个类方法?

时间:2014-03-02 04:34:58

标签: grails

如何在grails框架中调用一个类方法到另一个类方法?示例...

class ChartClassController {

    def index() {}

    def create(){
        def chartClassTypeList = ChartClassType.list()
    }
}

class ChartGroupController {

    def index() {}

    def create(){
        def chartGroupTypeList = ChartGroupType.list()
    }
}

我只是在ChartClassController中调用类(ChartGroupController)方法(创建)?这怎么可能 ??需要帮助!!

2 个答案:

答案 0 :(得分:4)

控制器不是常规类,它们基本上是响应请求的事件处理程序。生命周期由Grails和Spring管理,它们基本上不能直接调用。

不要从另一个控制器调用一个控制器,而是考虑将逻辑从两个控制器中所需的方法移动到src / groovy下的实用程序类。然后从两个控制器中调用它。

另一种选择是创建两个控制器都扩展的基类,并将该共享逻辑放在两个控制器从其创建方法调用的基类方法中。

答案 1 :(得分:1)

您可以使用重定向(从用户角度来看是否有意义是有争议的):

def create(){
    redirect(class:"ChartGroupController", action:"create")
}

此外,没有什么可以阻止您在任何控制器中调用任何域类,因此您的ChartClassController可以:

def create(){
    def chartGroupTypeList = ChartGroupType.list()
}

如果您愿意,甚至可以使用ChartGroup目录中的视图。但您可能希望将“域”分开以保持简单性和可读性。