2012-02-07 12 views

Respuesta

8

No puede definir métodos en GSP. Pero usted puede tener funciones anónimas si quieres: D

Ejemplo:

<% 
    def prettify = { "***$it***" } 
%> 
<h1>${prettify(someText)}</h1> 

Aunque este ejemplo no tiene mucho sentido, ya que ese pequeño formato podría ser inline. Para cualquier tipo de lógica adicional para las vistas, seguiría OverZealous recommendation y usaré un taglib.

+3

Estoy de acuerdo en que en la mayoría de los casos Taglib (o una sub-plantilla llamada con 'g: render') son las soluciones correctas. Pero a veces hay una pequeña cantidad de lógica repetida de que es bueno escribir solo una vez en un GSP, pero no garantiza tal promoción a un archivo externo. En esos casos, me gustaría escribirlo así: ' 'Observe los dobleces' '{{}}' que definen un cierre. Luego lo usa como una función normal: '$ {greet (" Sam ")}' – Tobia

6

No, simplemente no hagas esto. Esto es completamente contrario al propósito de un SGP. El GSP está diseñado para manejar información visual de marcado, no lógica de programación. Al lanzar funciones directamente dentro de su GSP , se convertirá en un lío de código inmanejable.

¿Por qué no lo pones en una etiqueta? Esto es para lo que son las etiquetas; no importa que solo se use dentro de su GSP. El GSP solo debe contener una lógica de visualización simple y contenido de salida. El código reutilizable siempre debe estar contenido dentro de un taglib o en algún tipo de controlador o servicio para una lógica compleja.

No menciona qué marco está utilizando, como Gaelyk o Grails. (A menos que esté usando Groovy puro en el servidor por algún motivo). No hay una forma práctica de recomendar una buena solución aquí sin más información.

Si está utilizando etiquetas de estilo JSP (<% %>) en su GSP, probablemente lo esté haciendo mal.

Si desea obtener una mejor respuesta, proporcione información más detallada sobre el entorno de programación, cuál es el objetivo y por qué (por qué no desea utilizar un taglib).

+0

Supongamos que tengo una plantilla para la fila. Esta plantilla no mide fuera de este GSP. ¿Es posible declarar una plantilla dentro de GSP? –

+0

Yo usaría ' PLANTILLA AQUÍ' – fixitagain

+0

podría ser útil para una plantilla interna pequeña, como una jerarquía. – Guillaume

Cuestiones relacionadas