什么是;foo?.bar“;你是说Groovy? #{if adsonuiasetlist.size()>0} #{列表项:ADSONUIASETLIST,as:'adsonui'} 资产:${adsonui?.productname}(${adsonui?.AssetId})广告客户:${adsonui?.campaign.Advertiser.contact_person}(${adsonui?.campaign.Advertiser.id})

什么是;foo?.bar“;你是说Groovy? #{if adsonuiasetlist.size()>0} #{列表项:ADSONUIASETLIST,as:'adsonui'} 资产:${adsonui?.productname}(${adsonui?.AssetId})广告客户:${adsonui?.campaign.Advertiser.contact_person}(${adsonui?.campaign.Advertiser.id}),groovy,syntax,Groovy,Syntax,#{/list} #{/if} 有人能解释一下${adsonui?.productname}代表什么吗?。请告诉我groovy和play framework pelase的新功能。如果adsonui不为空,则${adsonui?.productname}将返回adsonui.productname 或null如果为null 它叫?允许在foo为空时避免NPE异常 请参阅axample-第一个println为null,第二个失败 #{if adsonuiAssetList.size()>0

#{/list} #{/if}
有人能解释一下${adsonui?.productname}代表什么吗?。请告诉我groovy和play framework pelase的新功能。如果
adsonui
不为空,则${adsonui?.productname}将返回
adsonui.productname

null
如果为null


它叫

?允许在foo为空时避免NPE异常

请参阅axample-第一个println为null,第二个失败

#{if adsonuiAssetList.size()>0}
    #{list items:adsonuiAssetList, as:'adsonui'}
        <div class="imageElement">
            <h3>Asset : ${adsonui?.productname}(${adsonui?.AssetId})&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Advertiser : ${adsonui?.campaign.advertiser.contact_person}(${adsonui?.campaign.advertiser.id})</h3>
            <p></p>
            <a href="@{Assets.showAssetDetails()}?assetid=${adsonui?.AssetId}"  title="${adsonui?.productname}" class="open"></a>
            <img src="@{Assets.getAssetFileForSlideShow(adsonui?.AssetId,adsonui?.campaign?.mode_of_advertisement,870,240)}"  alt="${adsonui?.productname}" class="full" />
            <img src="@{Assets.getAssetFileForSlideShow(adsonui?.AssetId,adsonui?.campaign?.mode_of_advertisement,150,150)}"  alt="${adsonui?.productname}" class="thumbnail" />
    </div>
    #{/list}
#{/if}

也就是说,您不需要测试foo是否为空,并决定是否可以使用参考条

Thank you@Marmite Bomber
def foo

println foo?.bar

null

println foo.bar

Caught: java.lang.NullPointerException: Cannot get property 'bar' on null object