停止JSF事件链

时间:2012-12-10 20:09:52

标签: java events richfaces jsf-1.2

我正在修改一个用于平板电脑的jsf-1.2应用程序。

为此,我已经使表的行可单击以打开行内容的详细视图,而不是让用户单击该表中的链接(在桌面版本中就是这种情况)。

到目前为止一切正常。 但是,每行可以包含两个打开不同链接的富按钮。

该链接的内容在新选项卡中打开,就像它应该的那样。 我的问题是,rowclick的action事件也在原始标签中激活,这不是预期的行为。

我现在要做的是,如果点击该行中的某个按钮,则停止该事件。

我已经知道,在rowclick事件之前触发了butons的事件。 有没有办法在这一点上削减事件链?

2 个答案:

答案 0 :(得分:3)

这是由于事件冒泡而发生的。请尝试使用Event.stop(event);中的commandButton,如下所示。

<a4j:commandButton onclick="Event.stop(event);" action="#{myBean.myMethod())}" value="Show" />

答案 1 :(得分:0)

我不知道你是否可以打破链条 - 但即使有可能(可能是通过抛出异常) - 我会建议反对它。

在事件驱动的环境中执行此操作的正确(遗憾)方法是,当按钮的处理程序触发时,将某些boolean指示符设置为 true ,并将其设置回处理程序完成其作业时 false 。 在row-clicked事件的处理程序中,您需要检查boolean是否为真 - 并且只有在 false 时才会继续 - 继续处理row-clicked事件。

布尔值的建议名称:isRowButtownClicked

免责声明:我的答案基于我对C#的了解 - 我没有任何使用Java进行GUI开发的经验,特别是没有JSF的经验。