Jsf 单击中的客户端事件处理程序会导致重新提交页面

Jsf 单击中的客户端事件处理程序会导致重新提交页面,jsf,primefaces,Jsf,Primefaces,我对以下代码有奇怪的问题:- <p:dataTable id="dataTbl_mnuItmList_id" rows="5" paginator="true" paginatorPosition="top" value="#{addMenuItemMB.menuItemList}" var="menuItem" style="width:100%; height:100%"&g

我对以下代码有奇怪的问题:-

        <p:dataTable id="dataTbl_mnuItmList_id" rows="5"
                paginator="true" paginatorPosition="top"
                value="#{addMenuItemMB.menuItemList}" var="menuItem"
                style="width:100%; height:100%">
                <p:column headerText="Item Name" sortBy="itemName">
                    <h:outputText value="#{menuItem.itemName}" />
                </p:column>
                <p:column headerText="Created Date" sortBy="createdDate">
                    <h:outputText value="#{menuItem.createdDate}">
                    </h:outputText>
                </p:column>
                <p:column headerText="Modified Date" sortBy="modifiedDate">
                    <h:outputText value="#{menuItem.modifiedDate}" />
                </p:column>
                <p:column>
                    <p:commandButton id="cmdBtn_edit"
                        onclick="widVar_menuItem.unselectAllRows()"
                        update=":frm_addMnuItm_dlg:outPutPnl_addMnuItmDlg_id"
                        oncomplete="PF('dlg_addMnuItem_widVar').show()"
                        icon="ui-icon-pencil" title="Edit" value="Edit">
                        <f:setPropertyActionListener value="#{menuItem}"
                            target="#{addMenuItemMB.menuItemToEdit}" />
                    </p:commandButton>
                </p:column>
            </p:dataTable>
以下是具有widgetVar=widVar\u menuItem的数据表

上面的代码在datatable列中具有命令按钮,该列具有属性f:setPropertyActionListener,它工作正常。但当我添加onclick客户机事件处理程序时,页面被提交,当我从命令按钮中删除onclick属性时,它工作正常。所以我的问题是上面的代码有什么问题,或者我意识到可能是错误的,客户端事件处理程序不是使用f:setPropertyActionListener属性的属性。 请给我建议合适的解决方案


谢谢。

因此,您不想在单击按钮时提交页面,但保留onclick事件?是的,佩利森,您理解的没错。您是否可以使用widVar\u menuItem.unselectAllRows的代码更新您的帖子?或者menuItem是什么?你好Hatem我已经用widVar_menuItem更新了代码
        <p:dataTable id="dataTbl_menuItem_id" rows="5"
            paginator="true" paginatorPosition="top"
            widgetVar="widVar_menuItem" editable="true" editMode="cell"
            value="#{addMenuItemMB.mnuItmSpecDtlListModel}"
            var="mnuItmSpecDtl" rowKey="#{mnuItmSpecDtl.id}"
            selection="#{addMenuItemMB.selectedLabels}">
            <f:facet name="header">
                <p:outputLabel value="Specification Label" />
            </f:facet>
            <p:column selectionMode="multiple"
                style="width:2%; display:none;" />

            <p:ajax event="toggleSelect"
                listener="#{addMenuItemMB.onToggleSelect}" />
            <p:ajax event="cellEdit"
                listener="#{addMenuItemMB.onCellEdit}" />
            <p:column headerText="Label" style="width:31%">
                <h:outputText value="#{mnuItmSpecDtl.labelName}" />
            </p:column>
            <p:column headerText="Price" style="width:25%">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{mnuItmSpecDtl.price}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{mnuItmSpecDtl.price}"
                            style="width:50px" />
                    </f:facet>
                </p:cellEditor>
            </p:column>
    </p:dataTable>