В Richatas Datatable с кликабельными строками я хочу, чтобы один столбец игнорировал onClickEvent - PullRequest
0 голосов
/ 24 апреля 2018

В приложении, основанном на Seam 2.2.1, JSF 1.2, Richfaces 3.3.3, у меня есть таблица данных с кликабельными строками. В последнем столбце у меня есть значок (мусор). Нажатие здесь должно выполнить другой метод (удалить). Стандартное событие onRowClick не должно применяться.

Есть ли простой способ сделать это?

<rich:panel headerClass="panelHeader" styleClass="panel">
    <f:facet name="header">Header</f:facet>
    <rich:dataTable id="myTable" value="#{myModel}" var="k">

        <a4j:support event="onRowClick" action="#{myAction.selectItem(k, facesContext.viewRoot.viewId)}"
                            reRender="myTable"/>

            <rich:column>
                <f:facet name="header">
                        <h:outputText value="Normal Column - should be clickable"/>
                </f:facet>
                <h:outputText value="#{k.name}"/>
            </rich:column>

            <rich:column >
                <f:facet name="header">
                    <h:outputText value="Only Click on Icon should react to Mouseclick"/>
                </f:facet>
                <s:graphicImage value="/img/bin_closed.gif">
                    <a4j:support event="onclick"
                                 action="#{myAction.deleteItem(k)}"
                                 reRender="myTable"
                                 ajaxSingle="true" limitToList="true"
                                 onsubmit="if(!confirm('Really?')) { return false; }" />/>
                </s:graphicImage>
            </rich:column>

    </rich:dataTable>

</rich:panel>

1 Ответ

0 голосов
/ 25 апреля 2018

Я нашел решение своей проблемы. Для столбца, который содержит значок, я поместил значок в другой элемент <a4j:outputPanel, например: `

Теперь при нажатии на значок выполняется только метод действия.

Вот полное решение:

<rich:panel headerClass="panelHeader" styleClass="panel">
    <f:facet name="header">Header</f:facet>
    <rich:dataTable id="myTable" value="#{myModel}" var="k">

        <a4j:support event="onRowClick" action="#{myAction.selectItem(k, facesContext.viewRoot.viewId)}"
                            reRender="myTable"/>

            <rich:column>
                <f:facet name="header">
                        <h:outputText value="Normal Column - should be clickable"/>
                </f:facet>
                <h:outputText value="#{k.name}"/>
            </rich:column>

            <rich:column >
                <f:facet name="header">
                    <h:outputText value="Only Click on Icon should react to Mouseclick"/>
                </f:facet>
                <a4j:outputPanel onclick="event.stopPropagation()">
                    <s:graphicImage value="/img/bin_closed.gif">
                        <a4j:support event="onclick"
                                     action="#{myAction.deleteItem(k)}"
                                     ajaxSingle="true" limitToList="true"
                                     onsubmit="if(!confirm('Really?')) { return false; }" />/>
                    </s:graphicImage>
                </a4j:outputPanel>
            </rich:column>

    </rich:dataTable>

</rich:panel>
...