02 de febrero

Dentro del patrón de diseño MVC lleva las peticiones del controlador (peticiones) y genera las respuestas opuestas (la respuesta) y envía los datos (modelo) a la vista. A continuación se debe saber acerca de Grails controlador:

  1. Convención de nomenclatura
  2. Creación de controladores
  3. Creación de acciones (acciones)
  4. Los parámetros de consulta de la demanda y la reunión
  5. Disfruta de flash ámbitos
  6. Procesamiento de los datos (los modelos)
  7. Generar la respuesta (la respuesta)
  8. Reenvío y el encadenamiento de acciones (acciones)

Creación de controladores / convención de nomenclatura

Controladores de Grails en los grails-app\controller . Terminan en el nombre del archivo siempre se las arreglaba a los controladores como los usuarios del controlador. Groovy. La primera parte del nombre es parte de la URI (por ejemplo, el usuario administrador) a través del cual las acciones que deben abordarse.
Los controladores también se puede utilizar el comando grails create-controller puede ser creado.

Creación de acciones (acciones)

Acciones (acciones) se definen como propiedades de un controlador y se asigna a un URI. Así, la acción de la lista del controlador para el usuario en el URI gestionado managedUser/list mencionado

 class ManagedUserController { def list = { if(!params.max)params.max = 10 [ managedUserList: ManagedUser.list( params ) ] } } 

Si sólo el controlador en el URI dirigida, entonces la "acción por defecto" se ejecuta. Este índice se puede establecer en la propiedad.

 def index = { redirect(action:list,params:params) } 

Los parámetros de consulta de la demanda y la reunión

Cada controlador tiene un número de propiedades predefinidas que pueden ser suministrados de forma dinámica en tiempo de ejecución con valores. Estos incluyen:

  • Nuri actio
  • controllerUri
  • actionName
  • controllerName
  • flash
  • grailsApplication
  • grailsAttributes
  • log
  • params
  • sesión
  • solicitar
  • respuesta
  • ServletContext

Si se quiere acceder a los parámetros de la solicitud o de la sesión, se accede a las propiedades params o session a:

 def findBy = params["findBy"] def loggedUser = session["logged_user"] 

Disfruta de flash ámbitos

Con Flash, es posible un atributo de espacio para la siguiente petición (solicitud) para ofrecer. Esta funcionalidad se utiliza para informar al usuario sobre el estado de las acciones, de tal manera que la eliminación fue un éxito.

 flash.message = "ManagedUser ${params.id} deleted." 

Procesamiento de los datos (los modelos)

Los parámetros de las aplicaciones Web se pasan como cadenas, por lo que es necesario para asignar a los objetos de datos (modelos). En Grails, esto se hace muy simplemente mediante la asignación de los parámetros característicos de las properties de cada modelo.

 managedUser.properties = params 

Los modelos se implementan en Grails como mapas. Avance de la forma más sencilla de un modelo de objetos a la vista, la instancia devuelta.

 def managedUser = new ManagedUser() managedUser.properties = params return ['managedUser':managedUser] 

Generar la respuesta (la respuesta)

Para representar un punto de vista específico o piezas de código del controlador de Grails es la función de render disponibles.

 render(view:'edit',model:[managedUser:managedUser]) 

Para representar un punto de vista específico o piezas de código del controlador de Grails es la función de render disponibles.

Reenvío y el encadenamiento de acciones (acciones)

Envío a la otra acción se lleva a cabo a través de la redirect . La web de los parámetros opcionales de reenvío lo que se puede añadir. En otra acción del controlador se hace referencia a una cadena.

 // einfache Weiterleitung redirect(action:list) // Weiterleitung, mit Parametern redirect(action:show,id:managedUser.id) // Weiterleitung auf einen anderen Controller redirect(action:"/address/list") 

Las acciones también se pueden encadenar, por supuesto, se da a los objetos del modelo que se añaden durante la concatenación, y otras acciones de la cadena. Esto es útil, por ejemplo en la aplicación de los asistentes.

 class WizzardsController { def firstStep = { chain(action:secondStep,model:["step1":new Object()]) } def secondStep = { chain(action:thirdStep,model:["step2":new Object()]) }; def thirdStep= { return ["step3":new Object()]) }; } 

Actualización: la última versión del documento que tengo que mejorar la capacidad de mantenimiento como parte de un pequeño tutorial de Grails y tercerizados enlaces directos en la barra lateral derecha.

gklinkmann escrito por \ \ tags:

5 Respuestas a "controladores" Grails

  1. Christop Droste dice:

    Hola Gero,

    Echo de menos este tipo de visión general de Grails como interessierterm («precursor de la entrada» ;-) en el sitio de Grails. ¿No tendría más sentido para ellos colocar una vez allí?
    Además, todavía no estoy claro lo que en realidad sigue Grails innneren arquitectura. A mi me parece como JSP simples que vienen sólo en la vestimenta del SGP. Pero tal colaboración sería posible con JSF (no me refiero, por supuesto, una redirección o similar entre estos dos conceptos)?

  2. Robert dice:

    Hola,

    Tengo un problema para pasar variables a afterInterceptor beforeInterceptor dentro de un controlador.
    ¿Cómo funciona?
    ¿Alguien me puede ayudar en eso?

  3. gklinkmann dice:

    Por desgracia, no. Puedo usar ni el ni el afterInterceptor beforeInterceptor. En su lugar, yo uso para cubrir el filtro de seguridad.
    ¿Qué es lo que quiere implementar, ya que con esta combinación. Quizás hay una posibilidad de la otra.

  4. Robert dice:

    Me gustaría ejemplo beforINterceptor dominio a escribir en la base de datos y luego actualizar afterinterceptor .. Estadísticas de la solicitud ..

  5. gklinkmann dice:

    Si ha escrito correctamente en la base de datos, usted los puede leer en el afterInterceptor nuevo de la base de datos y actualizar curso.
    El rendimiento es, por supuesto, no es tan brillante, pero si el acceso al registro en un índice, no debería ser tan trágico.

Añadir un comentario

Sí, me gustaría ser notificado sobre comentarios!