【发布时间】:2015-06-03 06:03:12
【问题描述】:
我为数据表上的同一个 rowSelect 事件注册了两个 p:ajax 标签。
一个 p:ajax 驻留在复合组件内部,只更新页面中的公共区域,另一个 p:ajax 有一个侦听器,它在复合组件外部注册。
我从外部观察到监听器 p:ajax 被调用了两次。监听器方法怎么只执行一次,因为它只注册在一个 p:ajax 标签上?
<myComp:dataTable ...>
<p:ajax event="rowSelect" update=":form:tableDetails" listener="#{backingBean.selectRow}"/>
</myComp:dataTable>
这里是 CC 代码:
<cc:interface >
<cc:clientBehavior event="rowSelect" name="rowSelect" targets="#{cc.clientId}:dataTable" />
</cc:interface>
<cc:implementation>
<p:dataTable id="dataTable" ...>
<p:ajax event="rowSelect" update=":form:footPanelAndButtons"/>
</p:dataTable>
</cc:implementation>
为了简单起见,我省略了标签上的大部分属性。
我知道这可能是一个性能问题,因为同一事件会发生两次客户端/服务器通信。
【问题讨论】:
标签: ajax jsf-2 primefaces