2012-12-20 27 views
3

GWT 2.5.0 DevMode沒有提交請求派出的GWT文件上傳

我對下面file upload一個簡單的測試,

startupUrl:http://127.0.0.1:8888/UploadTest.html?gwt.codesvr=127.0.0.1:9997

<g:FormPanel ui:field="fpUpload"> 
    <g:VerticalPanel> 
     <g:FileUpload name="fileData" ui:field="fuUpload" /> 
     <g:Button ui:field="btUpload">Upload</g:Button> 
    </g:VerticalPanel> 
</g:FormPanel> 
@UiHandler("btUpload") 
public void onClickUploadButton(ClickEvent e) { 
    System.out.println("fileName:" + fuUpload.getFilename()); 
    fpUpload.setEncoding(FormPanel.ENCODING_MULTIPART); 
    fpUpload.setMethod(FormPanel.METHOD_POST); 
    fpUpload.setAction("/files"); 
    fpUpload.submit(); 
    System.out.println("Submitted, please wait!"); 
} 

@UiHandler("fpUpload") 
public void onSubmitComplete(SubmitCompleteEvent event) { 
    System.out.println("Submit completed!"); 
} 

輸出:

fileName:C:\fakepath\one_file_chosen_to_upload 
Submitted, please wait! 

但是,服務器沒有收到submit request,所以「提交完成!」從未出現過。

同時,流量被窺探到,submit request根本沒有發出。

$ tcpdump -A -i lo port 8888 

也沒有引發異常。任何想法?

@EDIT

的問題是ProdMode重複性。

@EDIT 2

後只是重新啓動機器,現在這個問題似乎消失了一樣默默地爲http submit request被忽略發出過線。不幸的是,我沒有線索爲什麼。

+0

任何在devmode日誌? '/ files'上下文/ servlet是否存在?在那裏嘗試一個斷點? –

+0

是的,我確實進入了'FormPanel#submit',但幾乎找不到任何有益的東西。什麼可以阻止客戶端發送'http submit request'本身,調用'FormPanel#submit'並且當c/s之間的網絡連接(tcp socket)持續時。 – sof

+0

而且,'/ files'上下文/ servlet處於等待提交請求的狀態。 – sof

回答

1

看來你還沒有編寫合適的servlet來處理多部分請求,你也必須在你的web.xml中配置那個servlet。你可以添加你的問題你的servlet代碼和你的內容web.xml

請注意,如果服務器返回404,則不會執行onSubmitComplete。嘗試使用Firebug檢查服務器響應,或者更改任何事物的表單操作,以便獲得相同的故障。

僅供參考,有一個非常容易使用的文庫:gwtupload,有很多不錯的功能,也許你可以看看他們的example頁面,並嘗試一下。