【发布时间】:2015-10-30 19:27:32
【问题描述】:
到目前为止,通过遵循文档,我已经设法使按钮的单击事件正常工作。我现在正在努力以编程方式触发 ADF 组件的点击事件。
源码如下:
<af:showDetailItem id="pane1" text="Panel Label 1" disclosed="true">
<af:commandButton text="commandButton 1" id="cb1">
<af:clientListener method="showNext" type="action" />
</af:commandButton>
</af:showDetailItem>
<af:showDetailItem id="pane2" text="Panel Label 2">
<af:commandButton text="commandButton 2" id="cb2">
<af:clientListener method="showNext" type="action" />
</af:commandButton>
</af:showDetailItem>
<af:showDetailItem id="pane3" text="Panel Label 3">
<af:commandButton text="commandButton 3" id="cb3">
<af:clientListener method="showNext" type="action" />
</af:commandButton>
</af:showDetailItem>
Javascript
function showNext(evt){
var src = evt.getSource();
var showDetailItemNode = src.getParent(); // targets the showDetailItem tag
/* how do I trigger the click event of this node */
}
所以基本上我想要实现的是,当点击按钮#cb1时,我想模拟showDetailItem #pane1的点击事件等等......
【问题讨论】:
-
如何编写 JavaScript 取决于 HTML DOM 树(你可能已经知道,JS 运行在 webbrowser 中,而不是 webserver 中)。很少有人使用 Oracle ADF,但很少有人会自己尝试或从头顶告诉上面发布的 XHTML 生成的 HTML 输出的样子。其他人对安装 Oracle ADF 只是为了弄清楚实际生成的 HTML 输出不感兴趣。换句话说,如果您包含生成的 HTML 输出,或者完全重新构建问题以将 HTML 包含在真正的 MCVE 风格中并重新定位
[html]用户,您就有更多机会获得答案。 -
@BalusC 够公平的。但我认为在生成的 HTML 上使用 javascript 并不是最好的做法(即使它可以完成这项工作),因为 ADF 有自己推荐的处理客户端交互的方式。在生成的 HTML 上使用 javascript 是一种选择,我可以自己做,但我不想遵循 ADF 文档中给出的方法;即,通过使用
clientListener标签。 -
不确定这是否是答案,因为我对 ADF 一无所知,更不用说它生成的 HTML 输出了,但这可能是朝着正确方向的有用提示:如果有问题的 HTML DOM 元素有一个 @ 987654325@ 属性,那么您可以通过
element.onclick()触发它。或者,如果您想模拟鼠标单击 HTML DOM 元素,则只需执行element.click(),这将触发其onclick(如果有),然后根据其返回值在 DOM 树中冒泡。跨度> -
很遗憾,我无法得到我想要的答案。下面的所有答案都指向正确的方向,但我只在寻找客户端解决方案,即;不使用 bean....
-
客户端解决方案需要了解客户端模型和视图。 IE。如我的第一条评论所示,生成的 MVCE 风格的 HTML 输出。可惜你没有早点看到/理解它。
标签: javascript jsf oracle-adf