GSP/Grails 中的问号是什么意思?
我在生成的 GSP 页面中看到了这一点。 ?是什么意思?
<g:textField name="name" value="${phoneInstance?.name}" />
I saw this in my generated GSP pages. What does the ? mean?
<g:textField name="name" value="${phoneInstance?.name}" />
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
它就是“安全导航操作符”,它是 Groovy 的一项功能,可以简洁地避免空指针异常。请参阅http://docs.groovy-lang.org/latest/html/documentation/index .html#_safe_navigation_operator
在这种情况下,如果
phoneInstance
为 null,那么它不会尝试获取name
属性并导致 NPE - 它只是设置字段标记的值为空。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 thename
property and cause a NPE - it just sets the value of the field tag to null.?
运算符在 Groovy 中允许空值(因此,GSP)。例如,通常在 gsp 中,如果
priceDetails
为 null,则会抛出NullPointerException
。如果我们改用
?
运算符...现在
${priceDetails?.amount}
的值为 null,而不是抛出空指针异常。The
?
operator allows null values in Groovy (and thusly, GSP). For example, normally in gsp,If
priceDetails
is null, this will throw aNullPointerException
.If we use the
?
operator instead ...now the value of
${priceDetails?.amount}
is null, instead of throwing a null pointer exception.如果左侧的对象为 null,则安全导航运算符 (?.) 返回 null,否则返回该对象右侧成员的值。所以
phoneInstance?.name
只是phoneInstance == null 的简写? null :phoneInstance.name
例如:
只是简写:
这是简写:
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 forphoneInstance == null ? null : phoneInstance.name
for example:
is just shorthand for:
which is shorthand for: