Oncomplete seems to run before listener end with p:ajax

UI Components for JSF
Post Reply
superbeda
Posts: 4
Joined: 17 Feb 2017, 10:25

14 Mar 2018, 11:45

Hello,
I try to upgrade to primefaces 6.2 from primefaces 6.1, but I had some problem.
My xhtml page, with primefaces 6.1, works fine.
I have a dataTable in an outputPanel with an ajax event:

<p:ajax event="rowSelect"
onstart="PF('waitMask').show();"
listener="#{myTable.onRowSelect}"
update=":form1:setValue"
oncomplete="PF('waitMask').hide();"
/>

The element setValue shows the row id of the row selected and works fine.
When I click on one row of the dataTable, 'waitMask' (a gif for loading) is showed, the listener fires, but then 'waitMask' doesn't hide.
If I click on another row the 'waitMask' hides, If I click on another row 'waitMask' is showed, if I click on another row the 'waitMask' hides and so on.
If I add a breakpoint on my source code, and slow down the process, then the 'waitMask' hides. This is what the page suppost to do.
Can anyone help me?

superbeda
Posts: 4
Joined: 17 Feb 2017, 10:25

20 Mar 2018, 15:22

Help me, please!!!!
I thinking about downgrading to the stable 6.1 version.

kukeltje
Expert Member
Posts: 9605
Joined: 17 Jun 2010, 13:34
Location: Netherlands

20 Mar 2018, 22:14

The code you posted is not an mcve (use google). So it is next to impossible to help

superbeda
Posts: 4
Joined: 17 Feb 2017, 10:25

21 Mar 2018, 09:46

Hello kukeltje,
I tried to find a solution by google and I don't found any. Then I decided to write here. This is the code of my datatable

<p:dataTable id="tableDatiLegenda"
var="legendaRow" widgetVar="clientTableDatiLegenda"
value="#{legendaInputBean.model}"
selection="#{legendaInputBean.legendaRowSelected}"
sortMode="single"
scrollable="true"
resizableColumns="false"
liveResize="false"
lazy="true"
emptyMessage="#{msgs.legenda_table_empty_message}"
paginator="true"
rows="10"
paginatorPosition="bottom"
paginatorAlwaysVisible="true"
rowsPerPageTemplate="10, 15, 20"
currentPageReportTemplate="(#{msgs.generale_table_pratiche_info_pagine} {currentPage} #{msgs.generale_table_pratiche_info_di} {totalPages})"
pageLinks="6"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
styleClass="tableNoSelectAll"
selectionMode="single" >
<p:ajax event="page" onstart="PF('waitMask').show();" oncomplete="PF('waitMask').hide();"></p:ajax>
<p:ajax event="filter" onstart="PF('waitMask').show();" oncomplete="PF('waitMask').hide();"></p:ajax>
<p:ajax event="sort" onstart="PF('waitMask').show();" oncomplete="PF('waitMask').hide();"></p:ajax>
<p:column sortBy="#{legendaRow.legendaRowKey}"
headerText="#{legendaInputBean.model.headers.legendaHeaderKey}"
filterBy="#{legendaRow.legendaRowKey}"
filterMatchMode="contains"
style="text-align: center;" >
<h:outputText value="#{legendaRow.legendaRowKey}" />
</p:column>
<p:column sortBy="#{legendaRow.legendaRowValue1}"
rendered="#{legendaInputBean.model.headers.legendaHeader1Value != null}"
headerText="#{legendaInputBean.model.headers.legendaHeader1Value}"
filterBy="#{legendaRow.legendaRowValue1}"
filterMatchMode="contains">
<h:outputText value="#{legendaRow.legendaRowValue1}" />
</p:column>
<p:column sortBy="#{legendaRow.legendaRowValue2}"
rendered="#{legendaInputBean.model.headers.legendaHeader2Value != null}" headerText="#{legendaInputBean.model.headers.legendaHeader2Value}"
filterBy="#{legendaRow.legendaRowValue2}"
filterMatchMode="contains">
<h:outputText value="#{legendaRow.legendaRowValue2}" />
</p:column>
<p:column sortBy="#{legendaRow.legendaRowValue2}"
rendered="#{legendaInputBean.model.headers.legendaHeader3Value != null}" headerText="#{legendaInputBean.model.headers.legendaHeader3Value}"
filterBy="#{legendaRow.legendaRowValue3}"
filterMatchMode="contains">
<h:outputText value="#{legendaRow.legendaRowValue3}" />
</p:column>
<p:column sortBy="#{legendaRow.legendaRowValue4}"
rendered="#{legendaInputBean.model.headers.legendaHeader4Value != null}" headerText="#{legendaInputBean.model.headers.legendaHeader4Value}"
filterBy="#{legendaRow.legendaRowValue4}"
filterMatchMode="contains">
<h:outputText value="#{legendaRow.legendaRowValue4}" />
</p:column>
<p:ajax event="rowSelect" onstart="PF('waitMask').show();" listener="#{myTable.onRowSelect}" update=":form1:setValue" oncomplete="PF('waitMask').hide();" />
</p:dataTable>

kukeltje
Expert Member
Posts: 9605
Joined: 17 Jun 2010, 13:34
Location: Netherlands

21 Mar 2018, 23:19

Please edit your posts and put the code in code tags with good indentation. Now it is unreadable. And it still is not an mcve. I cannot copy/paste this and run it.

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 45 guests