3
我正在使用GWT構建我的第一個Java應用程序,它必須從非常大的XML文件讀取數據。當我嘗試發送文件中信息的請求時,我遇到了問題,而且我不太確定它是否與文件的大小或我的語義有關。在我的計劃,我有以下:使用GWT讀取非常大的本地XML文件
static final String xmlurl = "filename.xml";
String xmlData;
...
public void onModuleLoad() {
requestData(xmlurl);
if(xmlData.equals("Error")){
// display error message
return;
} else {
// display the xml
}
void requestData(String url){
final int STATUS_CODE = 200;
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
try {
builder.setTimeoutMillis(2000);
builder.sendRequest(null, new RequestCallback() {
public void onError(Request request, Throwable exception) {
xmlData = "Error"
}
public void onResponseReceived(Request request, Response response) {
if (STATUS_CODE == response.getStatusCode()){
xmlData = response.getText();
} else {
xmlData = "Error";
}
}
}
} catch (RequestException e) {
xmlData = "Error";
}
}
我重寫了代碼,所以我可能已經取得了一些錯別字,但在實際應用中它編譯和運行。問題是當我嘗試顯示XML並且xmlData從不分配給任何東西時,我得到一個空指針異常。我試着放置一個while循環,等待它存儲「錯誤」或XML文本,但該變量從未分配給。我將XML文件保存在我的項目的war目錄中,似乎能夠找到該文件。我在網上搜索了類似的例子,但是一切似乎都比我想要做的更復雜一些,而且我不確定是否需要servlet或配置更改,或者文件是隻是太大而無法讀入字符串。任何幫助表示讚賞。謝謝。
感謝您的幫手方法!我會確保我嘗試一下 – Ahmed
我嘗試了你的幫助器方法,它完美地工作。我認爲這意味着這些類型的服務器調用應該使用AsyncCallback?再次感謝您的幫助,我真的很感激! – Ahmed
不行,使用AsyncCallback不是強制性的,但是這個接口非常適合這樣的使用。你當然可以設計使用不同的方法,例如區分各種故障情況 - 但在我的應用程序中它沒有意義 –