What does the question mark mean in GSP/Grails?

前端 未结 4 464
没有蜡笔的小新
没有蜡笔的小新 2021-01-31 14:58

I saw this in my generated GSP pages. What does the ? mean?


相关标签:
4条回答
  • 2021-01-31 15:32

    The ? operator allows null values in Groovy (and thusly, GSP). For example, normally in gsp,

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

    If priceDetails is null, this will throw a NullPointerException.

    If we use the ? operator instead ...

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

    now the value of ${priceDetails?.amount} is null, instead of throwing a null pointer exception.

    0 讨论(0)
  • 2021-01-31 15:38

    It's the "Safe Navigation Operator", which is a Groovy feature that concisely avoids null pointer exceptions. See http://docs.groovy-lang.org/latest/html/documentation/index.html#_safe_navigation_operator

    In this case, if phoneInstance is null, then it doesn't try to get the name property and cause a NPE - it just sets the value of the field tag to null.

    0 讨论(0)
  • 2021-01-31 15:41

    the safe navigation operator (?.) returns null if the object on the left is null, otherwise it returns the value of the right member of that object. so phoneInstance?.name is just shorthandn for phoneInstance == null ? null : phoneInstance.name

    for example:

    a = x?.y
    

    is just shorthand for:

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

    which is shorthand for:

    if(x == null){
        a = null
    } else {
        a = x.y
    }
    
    0 讨论(0)
  • 2021-01-31 15:47

    This is very important feature in Groovy. If the object is null (ie, "phoneInstance" is null) then it's provide "null" value. This feature is called "Safe Navigation Operator". Simply when we use this feature , No need of checking the object("phoneInstance") is null or not.

    0 讨论(0)
提交回复
热议问题