如何检查rich:组件是否返回null



我有一个名为pageContent.xhtml的ui:composition,它包含在另一个ui:compositionrich:popupPanel(两个不同的页面)中。

pagcontent .xhtml包含一个a4j:commandButton。在按钮的oncomplete方法中,我希望仅当pageContent.xhtml显示在rich:popupPanel上时才执行javascript。所以我想检查pageContent.xhtml,如果rich:popupPanel是可用的。

RichFaces文档描述,如果没有找到指定的组件标识符,rich:component返回null

出于测试原因,我在a4j:commandButtononcomplete方法中执行以下JS:
console.log('-> ' + #{rich:component('popupPanelId')});

如果pageContent.xhtml显示在弹出窗口上(id 'popupPanelId'可用),并且我单击按钮,我在控制台上看到以下结果:

-> BaseComponent, PopupPanel

如果pageContent.xhtml显示在另一个ui:composition页面(id 'popupPanelId'不可用),我点击按钮,我得到以下错误消息:

try {console.log('-> ' + );;} catch (e) {window.RichFaces.log.error('Error in me...

如果#{rich:component('popupPanelId')}没有找到组件,则返回结果页而不是null

如何检查组件是否可用而没有任何错误?

在服务器上计算EL表达式,然后将结果转换为要在页面上输出的字符串,将null转换为空字符串。

所以你可以从null检查开始:

oncomplete="#{rich:component('popupPanelId') == null ? 'alert('not found')' : 'alert('found')'}"

另一方面,我假设popupPanel是基于某些条件包含的,更好的方法是让@oncomplete检查相同的条件。否则,如果只是不呈现,函数将找到它。

相关内容

  • 没有找到相关文章

最新更新