PrimefacesfileDownloadコンポーネントを使用してファイルをダウンロードしようとしています。残念ながら、それは機能していません。「[ウィンドウ]応答にXMLデータが含まれていません」というJavascriptエラーのみが表示されます
Primefaces3.2でJSF2.1.6を使用し、データのプッシュにIceFaces Pushバージョン2.0.2を使用し、Springバージョン3.1.0で一部のSpring関数を使用しています。すべてTomcat6.0.33で実行されています。
私のxHtmlコードの抜粋
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui">
<h:body>
<p:layout>
...
<p:layoutUnit id="east" ... >
<h:form id="eForm">
<p:dataTable ... >
...
<p:row >
<p:column style="font-weight: bold;">Attach 1:</p:column>
<p:column>
<p:commandLink id="attach1" value="Download" ajax="false" immediate="true">
<p:fileDownload value="#{data.file}" />
</p:commandLink>
</p:column>
</p:row>
</p:dataTable>
</h:form>
...
</p:layout>
</h:body>
FileDownload Bean
@ManagedBean(name = "data")
@RequestScoped
public class FileDownload {
private StreamedContent file;
public FileDownload() {
InputStream stream = ((ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext()).getResourceAsStream("/resources/images/phone_speaker_x24.png");
file = new DefaultStreamedContent(stream, "image/jpg", "downloaded_optimus.jpg");
}
public StreamedContent getFile() {
return file;
}
}
FireBugからのエラー
[window] the response does not contain XML data bridge...9208334 (Zeile 1217)
[window] Error [status: emptyResponse code: 200]: An empty response was received from the server. Check server error logs.
Tomcatログにエラーはありません
編集
Icefacesが問題です。すべてのIcefacesLibsを削除すると、ダウンロードは正常に機能します。しかし、IceFacesもPushもありません。