Pregunta

El código

${personRequest.constraints.requestStatus.inList}

en mi archivo gsp lanza una NullPointerException , pero new PersonRequest (). restricciones ... funciona. ¿Por qué? ¿No es restricciones estática?

¿Fue útil?

Solución

Copiado de here (grails-user mail list)

  

pero ¿por qué acceder a campos estáticos?   no funciona?

     

Porque las " restricciones " campo estático   Es una propiedad de cierre. No tiene   sub-propiedades relacionadas con la   restricciones.

     

Grails evalúa este cierre usando una   constructor de restricciones que supervisa   " llamadas " a métodos que no existen,   es decir, los nombres de propiedad que utiliza:

type( inList: [xxxxx])
     

... provoca una llamada al método " tipo " con   un parámetro de mapa que contiene " inList "   == > algún valor.

     

A partir de esta información, Grails construye un   lista de todas las restricciones
  Disponible y los une al futuro.   instancias de la clase de dominio.

     

Entonces, cuando accedes a User.constraints   estáticamente, estás recibiendo un
  Cierre.

     

-podíamos -podría mirar a reemplazar el valor   de la propiedad de restricciones estáticas   en tiempo de ejecución después de evaluar el   Cierre se inicializa con.   Sin embargo, esto podría ser un poco " demasiado "   mágico. ¿Qué piensa la gente?

     

FYI es así ahora porque hasta   Las restricciones de 0.4 (si recuerdo) no eran estáticas, y en 0.4 pueden   aún así ser no estático. Solo en 0.5
  vamos a lanzar una excepción / ignorar   restricciones no estáticas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top