2011-02-09 19 views
0

我想從服務器上下載文件。正常的GWT RPC調用不允許我這樣做,因此我編寫了一個servlet來爲我完成這項工作。在客戶端,我創建了一個Frame對象,並在其中設置了servlet URL,並在我的根面板中添加了框架對象。 當我在IE中執行此操作時,會彈出一個窗口詢問保存/打開文件。 但是,當我在Firefox或Google Chrome瀏覽器中執行相同的操作時,沒有任何問題。 我沒有收到我的servlet /服務器端的任何請求。 這裏是一段代碼: -GWT框架不工作在Mozilla Firefox或谷歌鉻,但在IE中工作正常

String servletUrl =「http:// localhost:13080/Browser/ui/dataExportServlet?level = ZERO」;

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

那麼,有人可以幫助我。

回答

0

這可能與同源策略有關。 servlet和webapp在端口13080上運行嗎? 如果它們不同,SOP可能會失敗。 如果我理解正確,IE有一個更寬鬆的政策,所以它可以在那裏工作,但不是在鉻。

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

+0

雅,都在同一個端口上運行。如果我直接在chrome/mozilla中粘貼servlet URL,我會彈出。所以,我的servlet工作正常。但如果我通過GWT Applictaion調用它,通過Frame,請求不會到達servlet .... – 2011-02-09 16:48:03

0

在Chrome中,您可以使用開發工具(CTRL + SHIFT + I),以檢查是否該IFrame被添加到HTML,如果幀的源被設置正確。您還應該能夠看到哪些內容已加載到iframe中。

或者,在您的servlet中設置一個斷點,以查看iframe是否全部被Chrome瀏覽器命中。

+0

您好Steve,我使用開發工具檢查了Chrome。在「網絡」選項卡中,它顯示servlet名稱,「狀態」列顯示「待處理」。如果我看到「控制檯」選項卡,它會顯示「無法加載資源」,並且資源是我的servlet。當我將鼠標懸停在servlet名稱上時,它會顯示該servlet的正確URL。如果我採用該URL並粘貼到瀏覽器中,則其行爲如預期。所以,這意味着,servlet已經正確部署在web容器中。所以,你可以請建議我,我需要使它工作.... – 2011-02-10 05:18:57

0

我得到了這個問題的解決方案。 我刪除了框架並添加了以下代碼: -

com.google.gwt.user.client.Window.open(url,「CSVDownload」,「」);

現在,這將打開一個新的瀏覽器窗口,然後彈出窗口在所有3個Web瀏覽器中打開/保存服務器端文件。 (IE,Mozilla FireFox,Chrome)。

非常感謝!

相關問題