我正在修改一个用于平板电脑的jsf-1.2应用程序。
为此,我已经使表的行可单击以打开行内容的详细视图,而不是让用户单击该表中的链接(在桌面版本中就是这种情况)。
到目前为止一切正常。 但是,每行可以包含两个打开不同链接的富按钮。
该链接的内容在新选项卡中打开,就像它应该的那样。 我的问题是,rowclick的action事件也在原始标签中激活,这不是预期的行为。
我现在要做的是,如果点击该行中的某个按钮,则停止该事件。
我已经知道,在rowclick事件之前触发了butons的事件。 有没有办法在这一点上削减事件链?
答案 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的经验。