Secciones

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: 

Entrevistas con los expertos
 

Los protagonistas te cuentan de qué van los proyectos más importantes del mundo Groovy:


Un proyecto de:
ImaginaWorks
Campus Escuela de 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

Nacho - jueves 24/09/2009
Prueba a cambiar datosCuadroInstance.constraints.modelo.inList por datosCuadroInstance.constraints['modelo'].inList

Re: NullPointerException lanzado en una vista

mazaos - jueves 24/09/2009

Gracias 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.

 

Responder al hilo | Volver al foro "Grails" | Volver a los foros