简体   繁体   English

Primefaces数据表rowSelectCheckbox,rowUnSelectbox和toggleSelect事件

[英]Primefaces dataTable rowSelectCheckbox,rowUnSelectbox and toggleSelect events

I have datatable with checkbox selection option and I want to track check,uncheck and toggle select events. 我有带复选框选择选项的数据表,我想跟踪选中,取消选中和切换选择事件。 My code is : 我的代码是:

<p:dataTable id="faDetail" value="#{assetSWOMB.faDetailList}"
                                        lazy="true" rowIndexVar="rowsn" var="fad" rowKey="fad.id"
                                        selection="#{assetSWOMB.selectedList}" scrollable="true"
                                        scrollHeight="115">
                                        <p:ajax event="rowSelectCheckbox" ajax="true"
                                            immediate="true" listener="#{assetSWOMB.onCheck()}"
                                            update=":mainForm:countUser" process="@this" />
                                        <p:ajax event="rowUnselectCheckbox" ajax="true"
                                            immediate="true" listener="#{assetSWOMB.onCheck()}"
                                            update=":mainForm:countUser" process="@this" />

                                        <f:facet name="header">
                                Asset Detail List
                                </f:facet>
                                        <p:column style="width:16px;text-align:center"
                                            selectionMode="multiple" />

                                        <p:column headerText="#">
                                            <h:outputText value="#{rowsn+1}" />
                                        </p:column>
                                        <p:column headerText="Given Name">
                                            <h:outputText value="#{fad.assetGivenName}" />
                                        </p:column>
                                        <p:column headerText="Brand Name">
                                            <h:outputText value="#{fad.brandDescription}" />
                                        </p:column>
                                    </p:dataTable>

Function in Managed Bean is : 受管Bean中的功能是:

public void onCheck(){
        userCount = selectedList.size();
    }

While selecting a checkbox (check or uncheck), it always displays following error : 选择一个复选框(选中或取消选中)时,它始终显示以下错误:

com.sun.faces.context.PartialViewContextImpl processPartial
INFO: javax.faces.FacesException: DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled or you need to define rowKey attribute
javax.faces.FacesException: DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled or you need to define rowKey attribute
    at org.primefaces.component.datatable.DataTable.getRowData(DataTable.java:950)
    at org.primefaces.component.datatable.feature.SelectionFeature.decodeMultipleSelection(SelectionFeature.java:71)
    at org.primefaces.component.datatable.feature.SelectionFeature.decode(SelectionFeature.java:40)
    at org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:57)
    at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:787)
    at org.primefaces.component.api.UIData.processDecodes(UIData.java:228)
    at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:506)
    at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
    at org.primefaces.component.api.UIData.visitTree(UIData.java:639)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
    at javax.faces.component.UIForm.visitTree(UIForm.java:344)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
    at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:376)
    at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:252)
    at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183)
    at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931)
    at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at com.magnus.filter.LoginCheckFilter.doFilter(LoginCheckFilter.java:129)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)

But I have defined rowKey. 但是我已经定义了rowKey。 How to make it work ?? 如何使其工作?

尝试使用此rowKey="#{fad.id}"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM