2011-04-08 5 views
7

Soy bastante nuevo en grails. Me di cuenta de que las variables en el controlador no son visibles en la vista. Solo puedo obtener los valores de las variables cuando lo asigno a un alcance. ¿Es este el método estándar de Grails o estoy haciendo esto mal? Además, ¿el parámetro params es el correcto para usar o debería usar sesiones, servletContext?Variables de controlador de Grails no visibles en las vistas

En el controlador

String uploadLocation = grailsApplication.config.uploads.location.toString() 
params.put "upLoc", uploadLocation 

En la vista

<td> <input type="text" value="${params.get('uploc')}/${fileResourceInstance.decodeURL()}"></input></td> 

estoy muy familiarizado con Ruby on Rails y esto se maneja de manera muy diferente en RoR. Gracias.

Respuesta

11

Puede hacerlo como dice Maricel, pero hay otra manera (creo que es una forma predeterminada de hacerlo): devolver los valores que desea pasar a la vista en la función de acción. Por ejemplo

def test = "abc" 
def num = 3 

return [testInView: test, numInView: num] 

Luego, en vista que se puede acceder a $ {testInView}, $ {numInView}

Otra forma ligeramente diferente: se puede descuidar la palabra clave "retorno", que es "camino maravilloso" para devolver el último valor de la función.

6

Es necesario para pasar su variable como parte del modelo a través del método render en su acción del controlador, así:

String uploadLocation = grailsApplication.config.uploads.location  
render(model: [uploadLocation: uploadLocation]) 

A continuación, en la vista que sólo puede hacer:

<td> 
    <input type="text" value="${uploadLocation}/${fileResourceInstance.decodeURL()}"/> 
</td> 

Por otro lado, si este es un valor que se define en Config.groovy, puede hacer esto también en su gsp:

<%@ page import="org.codehaus.groovy.grails.commons.ConfigurationHolder as CH" %> 

<td> 
    <input type="text" value="${CH.config.uploads.location}/${fileResourceInstance.decodeURL()}"/> 
</td> 

Para obtener más información, consulte Grails docs.

1

Una nota al margen interesante. Si no devuelve nada de su acción, todas las variables en el alcance de la acción estarán disponibles en su vista como se describe aquí: http://www.grails.org/Controllers+-+Models+and+Views

+0

No veo esto documentado en la página que vinculó, también, es solo alcance de acción variables o clase amplia también? – EdgeCaseBerg

Cuestiones relacionadas