"foo?.bar"在Groovy中是什么意思?
What does "foo?.bar" mean in Groovy?
#{if adsonuiAssetList.size()>0}
#{list items:adsonuiAssetList, as:'adsonui'}
<div class="imageElement">
<h3>Asset : ${adsonui?.productname}(${adsonui?.AssetId}) 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}
任何人都可以解释 ${adsonui?.productname} 是什么吗?代表我是 groovy 的新手并且玩框架 pelase 告诉我它到底在做什么。
如果 adsonui
不为空,${adsonui?.productname}
将 return adsonui.productname
。
或 null
如果它为空。
?能够在 foo 为 null 的情况下避免 NPE 异常。
查看示例 - 第一个 println 给出 null,第二个失败
def foo
println foo?.bar
null
println foo.bar
Caught: java.lang.NullPointerException: Cannot get property 'bar' on null object
即您无需测试 foo 是否为 null 并决定是否可以引用 bar
#{if adsonuiAssetList.size()>0}
#{list items:adsonuiAssetList, as:'adsonui'}
<div class="imageElement">
<h3>Asset : ${adsonui?.productname}(${adsonui?.AssetId}) 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}
任何人都可以解释 ${adsonui?.productname} 是什么吗?代表我是 groovy 的新手并且玩框架 pelase 告诉我它到底在做什么。
adsonui
不为空,${adsonui?.productname}
将 return adsonui.productname
。
或 null
如果它为空。
?能够在 foo 为 null 的情况下避免 NPE 异常。
查看示例 - 第一个 println 给出 null,第二个失败
def foo
println foo?.bar
null
println foo.bar
Caught: java.lang.NullPointerException: Cannot get property 'bar' on null object
即您无需测试 foo 是否为 null 并决定是否可以引用 bar