<p:commandbutton>中的onclick客户端事件处理程序导致重新提交页面</p:commandbutton>

时间:2014-01-17 09:32:10

标签: jsf primefaces

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

        <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_menuItem”的

的dataTable
        <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>

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

感谢。

0 个答案:

没有答案