Grails中的控制器操作和方法之间的差异(Differences between action a

2019-08-17 23:22发布

据我知道,如果我想创建一个控制器动作,然后我可以做到这一点:

class My Controller {
    def myAction = {
      println "in my action "
    }
}

或者我可以创建它:

class My Controller {
    def myAction(){
      println "in my action "
    }
}

谁能告诉两个方法之间的差异,或者如果我有什么错我的概念或看法

Answer 1:

第一实现被限定在控制器公共封闭件,所述第二个是使用公共方法。

第二种方式是在Grails的2引入的,被广泛认为是最好的方式。

有几个原因我能想到从我头顶的:

  • 特别是最近版本的Grails,使用方法,可以让你充分利用性状。
  • 您可以使用继承来组织你的方法
  • 它必须是更有效

更新: 为什么要Grails的行动被宣布为方法,而不是封闭和这有什么区别呢?



Answer 2:

我不知道,但我认为它使用的是第一种方式是做到这一点的唯一方法,然后将其更改为允许第二种方式。 我认为 ,第二种方式是优先停留的方式,但我不知道。

[编辑]

这里是另一个堆栈溢出后进一步解释它:

为什么要Grails的行动被宣布为方法,而不是封闭和这有什么区别呢?



Answer 3:

利用方法,而不是行动(封闭性)有一定的优势:

  1. 内存高效
  2. 允许使用无状态控制器(singleton作用域)
  3. 您可以覆盖从子类的行动,并呼吁与super.actionName被覆盖的超类方法()
  4. 方法可以用标准的代理机制,这东西是复杂的,因为他们中的字段瓶盖做被截获。

请访问以下链接了解更多信息。

Grails的控制器



文章来源: Differences between action and methods in Grails controllers