Jsf 2 对话框在ajax调用时关闭
我正在使用素面。我在对话框中有一个dataTable,当我尝试对它进行排序/过滤时,对话框关闭。我假设每当进行ajax调用时,它都会关闭对话框。我还尝试制作一个“测试”示例按钮,它也会关闭对话框有没有办法防止这种情况发生?Jsf 2 对话框在ajax调用时关闭,jsf-2,primefaces,modal-dialog,Jsf 2,Primefaces,Modal Dialog,我正在使用素面。我在对话框中有一个dataTable,当我尝试对它进行排序/过滤时,对话框关闭。我假设每当进行ajax调用时,它都会关闭对话框。我还尝试制作一个“测试”示例按钮,它也会关闭对话框有没有办法防止这种情况发生? <p:outputPanel autoUpdate="true" deferredMode="true" deferred="visible"> <p:dialog height="700px" width="100%" closable="true
<p:outputPanel autoUpdate="true" deferredMode="true" deferred="visible">
<p:dialog height="700px" width="100%" closable="true" closeOnEscape="true" header="Sample table" widgetVar="sampleDialog" modal="true" showEffect="fade" hideEffect="fade" resizable="false">
<h:form>
<p:dataTable id="fooTableCurrent"
var="business"
value="#{mainViewController.lazyModel}"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
paginator="true" rows="20" style="width: 100%; text-align: center;"
rowsPerPageTemplate="10,20,50,100,200"
emptyMessage="No records found with given criteria"
editable="true"
lazy="true"
scrollable="true"
scrollHeight="100px">
<p:ajax event="rowEdit" listener="#{mainViewController.onBusinessRowEdit}" />
<p:ajax event="rowEditCancel" listener="#{mainViewController.onBusinessRowCancel}" />
<p:column headerText="Employee reg. #">
<h:outputText value="#{business.employee.employee_ID}" />
</p:column>
<p:column headerText="Employee">
<h:outputText value="#{business.employee.name}" />
</p:column>
<p:column headerText="Bank">
<h:outputText value="#{business.bank.name}" />
</p:column>
<p:column headerText="Office" filterStyle="width:60px;" filterBy="#{business.office.office_ID}" filterMatchMode="contains">
<h:outputText value="#{business.office.name}" />
</p:column>
<p:column headerText="Product group" style="width: 100px;">
<h:outputText value="#{business.product.product_group.name}" />
</p:column>
<p:column headerText="Product" filterStyle="width:60px;" filterBy="#{business.product.product_ID}">
<h:outputText value="#{business.product.name}" />
</p:column>
<p:column headerText="Contract" filterStyle="width:60px;" filterBy="#{business.contract}">
<h:outputText value="#{business.contract}" />
</p:column>
<p:column headerText="Value" sortBy="#{business.value}">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{business.value}" /></f:facet>
<f:facet name="input"><h:inputText value="#{business.value}" /></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Date" sortBy="#{business.insert_date}">
<h:outputText value="#{business.insert_date}" />
</p:column>
<p:column headerText="Approved" width="55" style="text-align: center;">
<p:selectBooleanCheckbox disabled="true" value="#{true}" />
</p:column>
<p:column style="width:32px" headerText="Edit">
<p:rowEditor />
</p:column>
<p:column headerText="Delete" width="30">
<p:commandButton icon="ui-icon-close" actionListener="#{mainViewController.deleteBusiness(business)}" update="@form">
<p:confirm header="Confirmation" message="Are you sure?" icon="ui-icon-alert" />
</p:commandButton>
<p:confirmDialog global="true" showEffect="fade" hideEffect="fade">
<p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</p:column>
</p:dataTable>
</h:form>
</p:dialog>
</p:outputPanel>
问题出在outputPanel标记中。删除autoUpdate=“true”
后,所有内容都像一个符咒一样工作。您可以使用属性oncomplete='PF.show('WIDGET\u VAR\u NAME')
强制再次显示对话框。此代码非常嘈杂。删除“Employee”列后,问题是否消失?不请从代码片段中省略它。删除paginatorTemplate
时,问题是否消失?不请从代码片段中省略它。当您删除scrollable=“true”
时,问题是否消失?不请从代码片段中省略它。仔细阅读并修正你的问题。顺便说一下,我最好的猜测是嵌套形式。谢谢你的回答。我看到您现在将此添加到问题中,下次请从头开始创建。这是一种解决方法(补偿),而其他答案修复(删除)了原因。在我的情况下,我检索到问题时没有任何autoUpdate=“true”
。我发布了我的解决方案,因为它对我有效。好的,谢谢你的澄清,但是如果你在没有autoUpdate=“true”
的情况下出现问题(并在对话框外明确更新了一些内容),那么你实际上在相同的表现形式下遇到了不同的“问题”