grails - valor - ¿Por qué se deben declarar las acciones de grial como métodos en lugar de cierres y qué diferencia hace?
valor nominal de una accion ejemplo (1)
En Grails 2.0, qué nuevo http://grails.org/doc/2.0.0.RC1/guide/introduction.html#whatsNew
dice:
1.1.3 Web Features Controller Actions as Methods It is now possible to define controller actions as methods instead of using closures as in previous versions of Grails. In fact this is now the preferred way of expressing an action.
Por ejemplo:
// action as a method
def index() {
}
// action as a closure
def index = {
}
¿Porque es esto importante? ¿Qué diferencia hace?
ACTUALIZACIÓN: Encontré esta discusión que habla mucho sobre el alcance y algunas cosas bastante peludas. http://grails.1312388.n4.nabble.com/Controller-actions-methods-or-closures-was-Re-grails-dev-Statically-typed-meta-programing-td3048287.html
Supongo que mi pregunta también podría ser esta: ¿qué ventaja tienen los cierres para las acciones?
La respuesta está here
Desde arriba enlace
Aprovechar los métodos en lugar de las propiedades de Cierre tiene algunas ventajas:
- Memoria eficiente
- Permitir el uso de controladores sin estado (alcance singleton)
- Puede anular acciones de subclases y llamar al método de superclase anulado con super.actionName ()
- Los métodos pueden ser interceptados con mecanismos de proxying estándar, algo que es complicado de hacer con Closures ya que son campos.
También hay una pregunta groovy similar here que tiene algunos detalles más