![](/img/trans.png)
[英]using <p:dataTable> cellEdit event is never fired in Primefaces
[英]Using the page event with p:dataList in PrimeFaces
<p:dataList>
是否支持page
事件? 我試圖以以下方式使用page
事件(在瀏覽頁面時使用<pe:blockUI>
阻止<p:dataList>
)。
<pe:blockUI target="dataList" widgetVar="blockDataListUIWidget">
<h:panelGrid columns="2">
<h:graphicImage library="default" name="images/ajax-loader1.gif"/>
<h:outputText value="Fetching..." class="block-ui-text"/>
</h:panelGrid>
</pe:blockUI>
<p:dataList id="dataList"
var="orderRow"
value="#{orderDetailsManagedBean}"
first="0"
rows="1"
paginator="true"
paginatorAlwaysVisible="false"
type="definition" lazy="true"
emptyMessage="Message">
<p:ajax event="page"
onstart="PF('blockDataListUIWidget').block()"
oncomplete="PF('blockDataListUIWidget').unblock()"
process="@this"
update="@none"/>
...
</p:dataList>
這不再起作用。 頁面只是空白,沒有錯誤。 <p:dataList>
似乎不支持事件。
無論如何,可以在<p:dataList>
模擬這種情況嗎?
從源代碼中可以看出, dataList
不支持page
事件,而dataGrid
支持它 。
解決方案將是猴子修補,因為我們無法控制重寫原始JS文件,您可以在處理分頁之前和之后掛接事件,所有這些都可以通過javascript進行。
這是一個示例:假設您的dataList widgetVar
是dataListWV
//making sure the widgetVar is ready to be used
setTimeout(dataListPaginationExtraEvents, 1000);
function dataListPaginationExtraEvents() {
var odlHandlePagination = PF('dataListWV').handlePagination;
PF('dataListWV').handlePagination = function(newState) {
//before
console.log('start fetch');
//calling original pagination
odlHandlePagination.apply(this, [newState]);
//after
console.log('end fetch');
}
}
從PrimeFaces 5.3 final(社區版本)開始, page
事件在<p:dataList>
受支持。
下圖取自PrimeFaces用戶指南5.3 (第146頁)。
在先前的指南中沒有提及Ajax行為事件。
問題中提到的page
事件在PrimeFaces 5.3 final(社區發行版)中可以完美地工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.