サブマーチャントをリストするデータテーブルがあります。また、サブマーチャントのサービスをリストする子データテーブルがあります。"p:rowExpansion" を使用して、サービスのデータ テーブルを表示します。ユーザーが親データテーブル行 (サブマーチャント) をダブルクリックしたときに、サブマーチャントの詳細を表示する必要があります。また、ユーザーがサービスのデータテーブル行をダブルクリックしたときにサービスの詳細を表示する必要があります。サブマーチャント テーブルに p:ajax event=rowDblselect を使用し、サービス テーブルに ajax event=rowSelect を使用すると、正常に動作します。しかし、やりたいことの両方のデータテーブルに ajax event=rowDblselect を使用すると失敗します。私のコードは次のようになります。
<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>
両方のデータテーブルに ajax event=rowDblselect を使用すると。サービスのデータテーブル行をダブルクリックすると、詳細ページが表示されますが、以下のようにコンソールからキャッチする例外が発生します。
`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)`
サブマーチャントのデータテーブル行をダブルクリックすると、詳細ページが表示されず (マネージド Bean メソッドを呼び出すことができません)、コンソールからキャッチしたのと同じ例外が発生します。サービスのデータテーブル行をダブルクリックすると、サブマーチャントのデータテーブルに関連するメソッドが呼び出され、同じ例外が再度スローされるようです。
解決策を考えている人はいますか?アドバイスをいただければ幸いです。入れ子になったデータテーブルが欲しいだけで、各データテーブルの行をクリックすると詳細に移動したい. 前もって感謝します....