我如何有条件地传播<p:datatable>页面事件fire </p:datatable>

时间:2013-04-04 14:26:17

标签: events jsf-2 primefaces

在我的应用程序中,我有<p:dataTable>分页和LazyDatamodel,在表单底部我有一个CommandButton 命名update,我可以通过它保存已编辑的行。 问题是: 1.当一个页面的用户想要离开页面时没有保存已编辑的行,那么我想传播被激活的page事件并保持当前页面 不要离开页面,如果当前页面没有变化,那么用户可以离开页面。

.xhtml代码如下:

<h:form id="userListForm">
    <p:panel id="userListPanel" header="#{adbBundle['userList.panel.header']}" toggleable="true">
        <p:dataTable var="user" id="userTable" value="#{userDataModel}" lazy="true" paginator="true" rows="25" paginatorPosition="bottom"
            paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
            rowsPerPageTemplate="25,50,100" widgetVar="userDataTable" styleClass="userTable" selectionMode="single" >


            <f:facet name="header">
                <p:outputPanel>
                    <h:panelGroup layout="block" id="resetFiter" styleClass="dataTableResetFilter">
                        <p:outputLabel value="#{adbBundle['filter.resetText']}" />
                        <p:spacer width="10" />
                        <p:commandButton icon="ui-icon-circle-close" actionListener="#{userListController.resetUserTable}" />
                    </h:panelGroup>
                </p:outputPanel>
            </f:facet>

            <p:column id="nameColumn" headerText="#{adbBundle['name']}" sortBy="#{user.fullName}" filterBy="#{user.fullName}" styleClass="userName">
                <h:outputText value="#{user.fullName}" />
            </p:column>

            <p:column id="statusColumn" headerText="#{adbBundle['status']}" sortBy="#{user.active}" filterBy="#{user.statusText}" filterMatchMode="exact" styleClass="manageStatus"
                filterOptions="#{userListController.statusOptions}" rendered="#{manageUser != null and manageUser != ''}">
                <h:panelGroup layout="block">
                    <p:selectOneRadio id="userRadio" value="#{user.statusText}" styleClass="roleRadio">
                        <f:selectItem itemLabel="#{adbBundle['active']}" itemValue="Active" />
                        <f:selectItem itemLabel="#{adbBundle['inactive']}" itemValue="Inactive" />

                        <p:ajax listener="#{userListController.changeStatus}" />
                        <f:attribute name="user" value="#{user}" />
                    </p:selectOneRadio>
                </h:panelGroup>
            </p:column>
        </p:dataTable>
    </p:panel>
</h:form>

如何实施?任何指针都对我很有帮助。感谢..

0 个答案:

没有答案