Primefaces p: calendário com p: valor ajax não atualizado (atraso de um passo)
Eu quero chamar um bean depois que uma data é selecionada em ump:calendar
. Na minha configuração eu tenho um@Named @ViewScoped
Feijão, a turmaObWithDate
é um@Entity
com um campo de dataválido de.
<code><h:form id="fUser"> <p:dataTable id="dt" var="cum" value="#{myBean.listObWithDates}"> <p:column> <p:calendar id="cValidFrom" value="#{cum.validFrom}"> <p:ajax event="dateSelect" listener="#{myBean.update(cum)}" update=":fUser:dt"/> </p:calendar> </p:column> </p:dataTable> </h:form> </code>
O bom é que o método do feijãoupdate(ObWithDate myO)
é chamado com o objeto correto toda vez que eu seleciono uma data. O ruim é quemyO.validFrom
não tem o valor correto. É sempreum passo atrás:
Esse problema me deixa louco, eu encontrei vários problemas com valores não atualizados corretamente e também alguns sobrep:calendar
. A maioria deles sugere o uso do atributoselectListener="#{calendarBean.handleDateSelect}"
com umhandleDateSelect(DateSelectEvent event)
método. Mas eu quero chamar meu método desde que eu quero passar a instância atual da variável.
p:dataTable
e usando apenasp:calendar
a questão ainda é a mesma.oerrado valor da saída de depuração pode ser observado para o método-Objectupdate(ObWithDate myO)
bem como para a entrada correspondente emmyBean.listObWithDates
.<p:ajax immediate="true" .../>
não resolve esse problema.Atualizar MattHandy me ajudou muito, a questão resultanteComo obter o item da lista correspondente na chamada ajax dentro do método beans? é formulado no acompanhamentoJSF p: calendário em p: dataTable: como obter a linha do evento p: ajax dateSelect.