i have a datatable listing submerchants. Also i have a child datatable listing the services of the submerchants. I use "p:rowExpansion" to show services datatable. I need to show submerchant details when the user double clicks the parent datatable row(submerchant). Also, i need to show service details when the user double clicks the services datatble row. It works fine if i use p:ajax event=rowDblselect for submerchant table and ajax event=rowSelect for services table. But it fails if i use ajax event=rowDblselect for both datatable that what i want to do. My code looks like as below;
<p:dataTable id="subMerchantsDataTable" var="subM"
value="#{subMerchantManagement.subMerchantList}"
rowKey="#{subM.subMerchantId}"
selection="#{subMerchantCommon.selectedSubMerchant}"
selectionMode="single"
style="width:1000;border: 1px solid rgb(168, 168, 168);"
scrollRows="20" scrollable="true" liveScroll="true"
scrollHeight="450"
emptyMessage="#{messagebundle.submerc_grdlabel_no_submerchant}">
<p:ajax event="rowToggle"
listener="#{subMerchantManagement.onRowToggle}" width="100%" />
<p:ajax event="rowDblselect"
listener="#{subMerchantManagement.retrieveSubmerchantDetails}"
update=":mainTabView" />
<p:column width="20" disabledSelection="true">
<p:rowToggler />
</p:column>
<p:column headerText="#{messagebundle.submerc_columnHeader_id}"
width="70" sortBy="#{subM.subMerchantId}">
<h:outputText value="#{subM.subMerchantId}" />
</p:column>
...........
...........
<p:rowExpansion>
<p:dataTable id="subMerchantServicesDataTable" var="svc"
value="#{subM.subMerchantServices}" rowKey="#{svc.serviceId}"
selection="#{subMerchantCommon.selectedService}"
selectionMode="single"
style="border: 1px solid rgb(168, 168, 168);"
emptyMessage="#{messagebundle.submerc_grdlabel_no_service}">
<p:ajax event="rowSelect"
listener="#{subMerchantManagement.retrieveSubmerchantDetailsByService}"
update=":mainTabView" />
<p:column width="18">
<h:outputText value="-" />
</p:column>
<p:column width="70">
<h:outputText value="#{svc.serviceId}" />
</p:column>
...........
...........
</p:dataTable>
</p:rowExpansion>
</p:dataTable>
When i use ajax event=rowDblselect for both datatable. if i double click the services datatable row, the detail page is shown but the exception is occured that i catch from the console as below;
`WARNING: Method not found: ........faces.bean.submerchants.SubMerchantManagement@1b0c025.retrieveSubmerchantDetailsByService(javax.faces.event.AjaxBehaviorEvent)
javax.el.MethodNotFoundException: Method not found: .........faces.bean.submerchants.SubMerchantManagement@1b0c025.retrieveSubmerchantDetailsByService(javax.faces.event.AjaxBehaviorEvent)
at com.sun.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:155)
at com.sun.el.parser.AstValue.invoke(AstValue.java:231)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
at org.primefaces.component.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxBehaviorListenerImpl.java:47)
at javax.faces.event.AjaxBehaviorEvent.processListener(AjaxBehaviorEvent.java:113)
at javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:106)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:760)
at javax.faces.component.UIData.broadcast(UIData.java:1071)
at javax.faces.component.UIData.broadcast(UIData.java:1093)
at javax.faces.component.UIData.broadcast(UIData.java:1093)
at javax.faces.component.UIData.broadcast(UIData.java:1093)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
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 weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)`
if i double click the submerchants datatable row, the detail page can not be shown (the managed bean method cannot be called.) and the same exception is occured that i catch from the console. It looks that when i double click the services datatable row, the method related to submerchants datatable is called and the same exception is thrown again.
Is there anyone have an idea for solution? Any advice will be appreciated. I wanna just nested datatables and wanna navigate to details when i click the rows for each datatble. Thanks in advance....