2012-06-26 75 views
1

我有一個下面的問題 - 我們正在使用FormPanel它發送文件到Servlet,它接受參數並試圖從這個文件中解析XML。這工作正常。GWT文件上傳

問題是當用戶上傳錯誤的文件,因此解析以SAXException結尾,我想傳播(或異常的消息)到客戶端。我試過類似

catch (SAXException ex) { 
    response.setStatus(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE); 
    response.flushBuffer(); 
} 

但它不工作,我總是得到空標籤前(<pre></pre>)。我試圖用

formPanel.addSubmitCompleteHandler(new SubmitCompleteHandler() { 

    @Override 
    public void onSubmitComplete(SubmitCompleteEvent event) { 
     String s = event.getResults(); 
    }); 

我可以用response.getWriter().write("Error");在我的Servlet,但如何在客戶端就會知道,如果錯誤發生真的還是不?使用類似event.getResults().contains("error")並不在我看來,作爲一個正確的解決方案,以抓住這個。

所以我想使用RequestBuilder,但我沒有看到一種方式我怎麼能得到上傳的文件,並將其推送到我的servlet。或者,也許轉換我的消息到JSON會有幫助?

回答

1

您應該參考谷歌gwt討論組上的this thread。您描述的方式,解析event.getResults()以確定是否有錯誤或成功情況下的結果是正確的方式,即使它看起來很野蠻。

如鏈接討論中所建議的,您可以查看GWT Upload以獲得更清晰的代碼以及上載進度信息。我相信你從網頁上傳文件到服務器的唯一兩種選擇是表單或Flash。

+0

謝謝你的回答,我會看GWT上傳庫。 –