1

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もありません。

4

2 に答える 2

2

Okey、Primefaces、IcePushは常に連携するわけではありません。プロジェクトからIceFacesPushを削除すると、ダウンロードは機能しましたが、Pushは機能しませんでした。

そこで、自分でPushを作成し、Primefacesを使用することにしました。

于 2012-05-30T08:57:39.697 に答える
0

getFileメソッドにブレークポイントを設定した場合、file == nullですか?

問題は、クラスが適切に構築されていないことである可能性があります

于 2012-05-10T09:13:54.060 に答える