首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在onRowClick数据表中单击outputLink时避免发生RichFaces事件

在onRowClick数据表中单击outputLink时避免发生RichFaces事件
EN

Stack Overflow用户
提问于 2015-06-04 16:43:44
回答 2查看 1.1K关注 0票数 0

如何避免调用具有outputlink (目标指向新窗口)的列上的datatable上的onRowClick

代码语言:javascript
复制
<rich:dataTable id="dt" value="#{bean.cars} var="_car">
    <a:support event="onRowClick" action="#{action.navigateToCarDetails(_car.id)}"/>

    <rich:column>
        <f:facet name="header">Select</f:facet>
        <a:commandLink onclick="Event.stop(event)" action="#{bean.toggleSelectedCar(_car.id)}" reRender="dt" ajaxSingle="true" limitToList="true">                
            <h:graphicImage value="/img/icon_checkbox_#{bean.isCarSelected(_car.id) ? 'active' : 'inactive'}.gif"/>
        </a:commandLink>
    </rich:column>

    <rich:column>
        <f:facet name="header">Brand</f:facet>
        <h:outputLink value="#{_car.link}" target="_blank">
            <h:outputText value="#{_car.brand}"/>
        </h:outputLink>
    </rich:column>

    <rich:column>
        <f:facet name="header">Year</f:facet>
        <h:outputText value="#{_car.year}"/>
    </rich:column>

    <rich:column>
        <f:facet name="header">Color</f:facet>
        <h:outputText value="#{_car.color}"/>
    </rich:column>

</rich:dataTable>

因此,在上面的示例中,当我单击行时,它将导航到一个包含汽车细节的页面。

当单击Select的行时,它将更新所选的car,并相应地更新复选框图标,但不导航到car detail页面,因为我有onclick="Event.stop(event)"

但是,当我单击outputLink框时,除了打开一个新窗口并显示制造商网页外,它还会将原始页面更新为汽车详细信息。我怎样才能防止这种情况发生?(我尝试添加onclick事件停止,就像select列一样,但是除了停止onrowclick事件之外,它还阻塞到制造商网页的链接)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-18 03:20:50

基本上,Event.stop(event)所做的工作如下:

代码语言:javascript
复制
\\ stops the event from bubbling up the event chain
event.stopPropagation();

\\ prevents the default action the browser makes on that event
event.preventDefault();

在您的情况下,您只想防止冒泡,因此有一个方法:

代码语言:javascript
复制
onclick="event.stopPropagation()"
票数 1
EN

Stack Overflow用户

发布于 2015-06-05 14:01:39

你应该能做这样的事:

代码语言:javascript
复制
<rich:dataTable
    onRowClick="if (event.target.id.endsWith('columnId')) return false;" …>

onRowClick函数在a4j:support之前执行,因此如果返回false,则不会调用该操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30649596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档