2

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

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

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

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

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

我已经知道,按钮的事件是在 rowclick 事件之前触发的。有没有办法在这一点上切断事件链?

4

2 回答 2

3

这是由于事件冒泡而发生的。尝试Event.stop(event);在您commandButton的如下使用。

<a4j:commandButton onclick="Event.stop(event);" action="#{myBean.myMethod())}" value="Show" />
于 2012-12-11T04:23:42.837 回答
0

我不知道你是否可以打破链条 - 但即使有可能(可能通过抛出异常) - 我建议不要这样做。

在事件驱动的环境中执行此操作的正确(可悲)方法是在按钮的处理程序触发时将某些boolean指示器设置为true ,并 在处理程序完成其工作时将其设置回false 。row-clicked事件的处理程序中,您需要检查 是否boolean- 并且仅当它为时- 继续处理该row-clicked事件。

布尔值的建议名称:isRowButtownClicked

免责声明:我的答案基于我对 C# 的了解——我在 Java 中的 GUI 开发方面没有任何经验,尤其是在 JSF 中。

于 2012-12-10T20:39:00.607 回答