2011-02-09 36 views
0

サーバからファイルをダウンロードしようとしています。通常のGWT RPCコールではそれができないので、私はその仕事をするサーブレットを書いてくれました。クライアント側からは、Frameオブジェクトを作成しており、その中にサーブレットURLを設定し、そのフレームオブジェクトをルートパネルに追加します。 これをIEで実行すると、保存/開くファイルを要求するウィンドウがポップアップします。 しかし、私はFirefoxやGoogle Chromeブラウザで同じものを実行すると、何も動いていません。 私のサーブレット/サーバー側でリクエストがありません。 ここにコードの一部があります: -GWTフレームがMozilla FirefoxやGoogle Chromeで動作しませんが、IEでうまく動作します

文字列servletUrl = "http:// localhost:13080/Browser/ui/dataExportServlet?level = ZERO";

  Frame frame = new Frame(servletUrl); 
    frame.setVisible(false); 
    RootPanel.get().add(frame); 

誰かが私を助けてくれますか?

答えて

0

これは、同じ発信元ポリシーに関連している可能性があります。 サーブレットとWebアプリケーションの両方がポート13080で動作していますか? これらが異なる場合は、SOPが失敗することがあります。 私が正しく理解していれば、IEはよりリラックスしたポリシーを持っているので、そこでは動作するかもしれませんが、Chromeでは動作しません。

がChromeでhttp://en.wikipedia.org/wiki/Same_origin_policyCan I disable SOP (Same Origin Policy) on any browser for development?

+0

Yaは、どちらも同じポートで実行されています。サーブレットURLをchrome/mozillaに直接貼り付けると、ポップアップが表示されます。だから、私のサーブレットは正常に動作しています。しかし、GWT Applictaion、Frameによって呼び出すと、リクエストはサーブレットに届きません。 –

0

を参照してください、あなたはIFrameのは、HTMLに追加されている場合、フレームのソースが正しく設定されているかどうかを確認するために開発者ツール(Ctrl + Shiftキー+ I)を使用することができます。また、iframeに読み込まれたコンテンツを確認することもできます。

サーブレットにブレークポイントを設定して、iframeがChromeからまったくヒットしていないかどうかを確認します。

+0

こんにちはSteve、Developer Toolsを使用してChromeでチェックしました。 [ネットワーク]タブにはサーブレット名が表示され、[ステータス]列には[保留中]と表示されます。 「Console」タブが表示されている場合は「Resouceをロードできませんでした」と表示され、リソースはサーブレットです。サーブレット名の上にマウスを置くと、そのサーブレットの正しいURLが表示されます。そのURLをブラウザに貼り付けると、期待通りに動作します。つまり、サーブレットが適切にWebコンテナにデプロイされていることを意味します。だから、あなたが私にそれを働かせるために必要なものを提案してもらえますか? –

+0

私はさらに調査をしました。 Chromeでは、GWTアプリケーションを介してサーブレットにアクセスすることはできませんが、Mozilla Firefoxではリクエストがサーブレットに渡され、データが生成され、結果が正しく返されます(実際はCSVファイル)、クライアント側ではポップアップウィンドウが表示されません。私は本当にMozillaのこの問題をatleastで解決する必要があります..... –

0

私はこの問題の解決策を得ました。 フレームを削除し、次のコードを追加しました: -

com.google.gwt.user.client.Window.open(URL、 "CSVDownload"、 "");

これで新しいブラウザウィンドウが開き、3つのWebブラウザすべてでサーバーサイドファイルを開く/保存するためのポップアップが表示されます。 (IE、Mozilla FireFox、Chrome)

ありがとうございました!!!

関連する問題