我面临一个奇怪的情况是我有一个commandButton(我已经尝试了标准的h:commandButton和primefaces一个p:commandButton),当点击按钮时,支持bean中的一个方法被调用并返回一个Excel文件。这个命令按钮在对话框内,但我认为这不应该影响。
问题是这个按钮似乎没有生成任何请求,至少 firebug 没有显示它,但是我从服务器获取 Excel 文件,如果没有请求,这是没有意义的。
<h:commandButton id="downloadButton" value="Download" action="#{bean.downloadExcel}"/>
<p:commandButton id="downloadButton" value="Download" action="#{bean.downloadExcel}" ajax="false" onsuccess="confirmDialogWv.close();"/>
我不会同时使用这两个按钮,只是用它们进行了测试,结果相同。
如果“一切正常”有什么问题?如果我没有任何请求,我无法通过 onsuccess 事件关闭对话框。
以前有人遇到过这个问题吗?有什么解释吗?
在此先感谢您的帮助!
编辑:
<h:form id="contentForm" prependId="false" >
<!-- lot of code -->
<p:dialog id="confirmDialog"
modal="true"
closable="false"
widgetVar="confirmDialogWv"
resizable="false"
header="Confirm">
<p:commandButton id="downloadButton" value="Download" action="#{bean.downloadExcel}" ajax="false" onsuccess="confirmDialogWv.close();"/>
<p:commandButton id="openHtmlButton" value="Open HTML" process="@form" update="@form" actionListener="#{bean.openHtml}"/>
</p:dialog>
</h:form>
第二个按钮打开一个新窗口并正常工作。
更新:
如前所述,firebug 没有显示任何请求,但我现在一直在使用 IE 和 Chrome 进行测试。
Chrome:显示请求,但是当我在浏览器中获取 Excel 文件时,请求的状态变为“已取消”。
IE9:显示请求并返回代码 200,但未触发 onsuccess 事件