playframework中条件get like${client?.name}的代码在哪里?

playframework中条件get like${client?.name}的代码在哪里?,playframework,Playframework,使用JsonElement时,如果不为null,则需要获取元素 这在使用JsonElement时不起作用 ${client?.name} 有人知道怎么玩吗!是否执行此计算?条件?。表示法是Groovy的一部分,而不是Java。因此,此符号仅在Groovy模板引擎中可用。听起来您试图在Java类中使用相同的符号,但这是无法做到的 您可以在Groovy站点上阅读有关Groovy“安全导航操作符”的更多信息-使用Groovy评估Groovy模板中的java表达式。它基于JavaBean规范。假设您有一

使用JsonElement时,如果不为null,则需要获取元素

这在使用JsonElement时不起作用 ${client?.name}


有人知道怎么玩吗!是否执行此计算?

条件
?。
表示法是Groovy的一部分,而不是Java。因此,此符号仅在Groovy模板引擎中可用。听起来您试图在Java类中使用相同的符号,但这是无法做到的


您可以在Groovy站点上阅读有关Groovy“安全导航操作符”的更多信息-

使用Groovy评估Groovy模板中的java表达式。它基于JavaBean规范。假设您有一个对象
客户机
,使用一个公共方法
getName()
,那么您可以执行
${client.name}
${client.getName()}
,此外,play groovy模板引擎可以通过允许您使用
${client?.name}
来保护您的键入。回到您的案例,如果客户机是一个JsonElement,那么您可能可以通过
${client?.getAsJsonObject()?.get(“name”)}

来获取name属性,因此,不可能添加JavaExtension或类似的内容来避免NullPointerException?我希望有一个更干净的代码它不是关于NPE的,表达式
${client?.getAsJsonObject()?.get(“name”)}
已经对NPE安全了。问题是您不能使用
${client.name}
并期望它自动成为${client.getAsJsonObject().get('name')}`