我有p:poll
更新p:dataTable
,但问题是在点击p:dataTable
的行之前不会开始更新。当页面加载没有任何事情发生,直到我点击一行,之后一切正常。
我已阅读p:poll
并默认拥有autostart="true"
。
这是我的p:poll
<p:poll interval="5" listener="#{adminUsuarios.actualizarLista()}" update="tblUsuarios" />
这是我的p:dataTable
<p:dataTable id="tblUsuarios" var="us" value="#{adminUsuarios.listaUsuarios}" paginator="true" rows="50" paginatorPosition="both" selectionMode="single" selection="#{adminUsuarios.usuarioSeleccionado}" rowKey="#{us.id_User}">
<p:ajax event="rowSelect" oncomplete="PF('editarDialog').show()" update=":myForm:myDialog" />
<p:column headerText="Usuario">
<h:outputText value="#{us.id_User}" />
</p:column>
<p:column headerText="Nombre">
<h:outputText value="#{us.nameU}" />
</p:column>
</p:dataTable>
当点击表格的一行时,我会显示一个对话框。我认为问题可能出在这个问题上。一切都在同一个h:form
,只有在点击p:poll
p:datatable
)
这是我的p:dialog
<p:dialog id="myDialog" widgetVar="editarDialog" header="Editar perfil de usuario #{adminUsuarios.usuarioSeleccionado.id_User}" resizable="false" width="400" showEffect="size" hideEffect="size">
<h:panelGrid columns="2" cellpadding="4" style="margin: 0 auto;">
<h:outputText value="Perfil" />
<p:selectOneMenu id="cboPerfil" value="#{adminUsuarios.usuarioSeleccionado.nivelAlmacen}" >
<f:selectItem itemLabel="..." itemValue="0" />
<f:selectItem itemLabel="2" itemValue="2" />
<f:selectItem itemLabel="1" itemValue="1" />
</p:selectOneMenu>
</h:panelGrid>
</p:dialog>
显示的一切都是我的代码中的顺序。
答案 0 :(得分:0)
这是因为您的对话框不是动态的,并且在页面加载时获取它的内容。 此时未进行任何选择,属性#{adminUsuarios.usuarioSeleccionado}为空。那会导致PropertyNotFoundException。 您可以在页面加载之前设置p:dialog componet dynamic attribute true或init usuarioSeleccionado变量(例如在bean构造函数中)。