我必须在primefaces对话框中实现搜索功能。提交搜索命令按钮后,需要更新搜索旁边的表。但是每次我点击搜索按钮,弹出窗口就关闭了。请指导。下面是我的代码片段供参考:
......
<p:commandButton id="search" value="Search" actionListener="#{createTicketBaseBean.searchUserFromList}" update="@form" onclick="dlg.show()"></p:commandButton>
</h:panelGrid>
</h:panelGroup>
<h:panelGroup style="float:right" >
<p:dataTable id="table" var="user" value="#{createTicketBaseBean.userList}" selection="#{createTicketBaseBean.selectedUser}" selectionMode="single" rowKey="#{user.email}" >
<p:column headerText="Name" >
<p:commandLink id="nameselect" value="#{user.name}" onclick="dlg.hide()"/>
</p:column>
<p:column headerText="Email">
<h:outputText value="#{user.email}" />
</p:column>
<p:column headerText="Department">
<h:outputText value="#{user.department}" />
</p:column>
</p:dataTable>
将p:commandbutton
中的onclick
替换为oncomplete
。点击按钮时,立即发生onclick
事件。由于这是AJAX按钮(在Primefaces中这是默认的),在AJAX请求和对话框打开之间将存在竞争条件。当使用oncomplete
时,它将在AJAX请求完成后调用。