2012-02-09 9 views
21

En griales 2.0 cuál es 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:¿Por qué se deben declarar las acciones de grial como métodos en lugar de cierres y qué diferencia hace?

// action as a method 
def index() { 
} 
// action as a closure 
def index = { 

} 

¿Por qué 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?

Respuesta

24

La respuesta es here

Desde arriba enlace

Aprovechando métodos en lugar de propiedades de cierre tiene algunas ventajas:

  1. eficiente de la memoria
  2. permitir el uso de controladores sin estado (alcance singleton)
  3. Puede anular acciones de subclases y llamar al método de superclase anulado con super.actionName()
  4. Los métodos se pueden interceptar con mecanismos de proxying estándar, algo que es complicado de hacer con Closures ya que son campos.

También hay una pregunta maravilloso similares here que tiene algunos detalles más

+12

interesantes, así que por qué eran ellos nunca cierres? – Mikey

Cuestiones relacionadas