javascript - 如何检查是否富有 :component returns null

标签 javascript jsf richfaces

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

pageContent.xhtml 包含 a4j:commandButton 。在 oncomplete按钮的方法 我想仅当 pageContent.xhtml 显示在 rich:popupPanel 上时才执行 javascript 。所以我想检查 pageContent.xhtml 是否 rich:popupPanel可用。

富人面孔 documentation描述 rich:component返回null ,如果未找到指定的组件标识符。

出于测试原因,我在 oncomplete 中执行以下 JS a4j:commandButton的方法:

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将转换为空字符串。

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

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

另一方面,我假设 popupPanel 是基于某些条件包含的,更好的方法是让 @oncomplete 检查相同的条件。否则,如果它没有渲染,函数会找到它。

关于javascript - 如何检查是否富有 :component returns null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31957506/

相关文章:

javascript - 如何在选择时更改 react 选择选项样式

javascript - 在加载和更改样式后更改样式以匹配另一个元素的样式

javascript - 未捕获类型错误 : Cannot read property 'action' of null with delayed handler

javascript - 防止提交空白输入和文本区域

css - 如何在 PrimeFaces 中制作水平菜单

java - hibernate + jsf + spring 的缓存提供程序

jsf - JSF Web 应用程序中不断出现“目标无法访问”、标识符解析为 null 的情况

java - richfaces 过滤日期列

jsf - 将 JSF 1.1 与 Ajax4jsf 1.x 迁移到 JSF 2

javascript - 如何从 C# 代码访问 Javascript 中的值?