Lo + Leído
Eventos destacados
Artículos para tus primeros pasos
Si estás empezando a introducirte en el mundo de Groovy y Grails, no te pierdas nuestros artículos básicos:
- Introducción a Groovy, parte 1 (Andrés Almiray)
- Introducción a Groovy, parte 2 (Andrés Almiray)
- Introducción a Groovy, parte 3 (Andrés Almiray)
- Introducción a Grails (Material Seminario ImaginaWorks)
Los protagonistas te cuentan de qué van los proyectos más importantes del mundo Groovy:
Grails
NullPointerException lanzado en una vista
mazaos - miércoles 23/09/2009 Hola:
Tengo un flujo, en el que una de las vistas, me da un nullPointerException,
sin embargo, esa misma vista fuera del flujo funciona perfectamente. La
definicion del flujo esta en CuadroController.groovy:
def crearCuadroFlow = {
inicio {
on("siguiente"){
def cuadro = new Cuadro(params)
flow.cuadro=cuadro
if (!flow.cuadro.validate()) return error()
flow.cuadro.save()
}.to "datosCuadro"
on ("cancel").to "fin"
}
datosCuadro {
on("guardar"){
def datosCuadroInstance = new DatosCuadro()
datosCuadroInstance.properties = params
flow.datosCuadro=datosCuadroInstance
flow.cuadro.datosCuadro=datosCuadroInstance
flow.datosCuadro.save()
redirect (action:show,id:flow.cuadro.id)
}.to "fin"
on ("atras").to "inicio"
}
fin{
}
}
La excepcion se lanza en la vista datosCuadro.gsp, justo en la llamada datosCuadroInstance.constraint.modelo.inList, en:
<td valign="top" class="value ${hasErrors(bean:datosCuadroInstance,field:'modelo','errors')}">
<g:select id="modelo" name="modelo" from="${datosCuadroInstance.constraints.modelo.inList}" value="${datosCuadroInstance.modelo}" >
</g:select>
</td>
El error es:
Error processing GroovyPageView: Error executing tag <g:form>: org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error evaluating expression [datosCuadroInstance.constraints.modelo.inList] on line [33]: java.lang.NullPointerException: Cannot get property 'modelo' on null object
Sin embargo llamando a esta misma vista create.gsp, y el controlador DatosCuadro.groovy con la closure create:
def create = {
def datosCuadroInstance = new DatosCuadro()
datosCuadroInstance.properties = params
return ['datosCuadroInstance':datosCuadroInstance]
}
Funciona perfectamente. Supongo que cuando en el flujo creo la instancia de
datosCuadro, de alguna manera para la vista no existe (es null).
Cómo podría solucionar esto?
Gracias de antemano.
Re: NullPointerException lanzado en una vista
mazaos - jueves 24/09/2009Gracias Nacho por tu respuesta,pero sigue igual :-(
Yo tengo 2 domains diferentes:
Cuadro.groovy
DatosCuadro.groovy
Controladores:
CuadroController.groovy(donde defino el flow q muestra una vista donde llamo a datosCuadro)
DatosCuadroController.groovy (donde si directamente desde este controlador uso la vista create no me salta la excepcion).
Lo unico q se me ocurre es q sea un problema de q la instancia de DatosCuadro creada en el flow, en la vista se pierda o algo asi.
Re: NullPointerException lanzado en una vista
Nacho - jueves 24/09/2009