documentacion docs grails groovy operators gsp

documentacion - grails 2.5 docs



¿Qué significa el signo de interrogación en GSP/Grails? (4)

Esta es una característica muy importante en Groovy. Si el objeto es nulo (es decir, "phoneInstance" es nulo), entonces proporciona un valor "nulo". Esta función se llama "Operador de navegación segura". Simplemente cuando utilizamos esta función, no es necesario verificar el objeto ("phoneInstance") es nulo o no.

Vi esto en mis páginas generadas de GSP. ¿Qué hace el ? ¿media?

<g:textField name="name" value="${phoneInstance?.name}" />


El ? el operador permite valores nulos en Groovy (y por lo tanto, GSP). Por ejemplo, normalmente en gsp,

<g:field name="amount" value="${priceDetails.amount}" />

Si priceDetails es nulo, arrojará una NullPointerException .

Si usamos el ? operador en cambio ...

<g:field name="amount" value="${priceDetails?.amount}" />

ahora el valor de ${priceDetails?.amount} es nulo, en lugar de arrojar una excepción de puntero nulo.



el operador de navegación segura (?.) devuelve nulo si el objeto de la izquierda es nulo, de lo contrario, devuelve el valor del miembro derecho de ese objeto. entonces phoneInstance?.name es solo abreviatura de phoneInstance == null ? null : phoneInstance.name phoneInstance == null ? null : phoneInstance.name

por ejemplo:

a = x?.y

es solo una abreviatura de:

a = (x == null ? null : x.y)

que es la abreviatura de:

if(x == null){ a = null } else { a = x.y }