2013-11-26 83 views
0

我正在開發一個GWT應用程序,我正在獲取包含select查詢結果的List。這個選擇查詢有行。每一行的每個元素都由「::」分隔開前一個和下一個。GWT JSNI拆分方法bug

我嘗試使用String.split分裂,但它正在採取年齡來執行。我目前已經讀過(我正在使用GWT 2.5.1),它的String.split方法非常麻煩,有時幾乎比JSNI方法多執行1000倍;所以我採取了這種方法。

的JSNI方法,我現在用的就是以下(這是我從這個同一站點拿起):

public static final native String[] split(String string, String separator) /*-{ 
    return string.split(separator); 
    }-*/; 

但現在,我得到這個錯誤:

java.lang.ClassCastException :com.google.gwt.core.client.JavaScriptObject $不能轉換爲[Ljava.lang.String;

即使我寫的ToString()在結束時,誤差變下列:

java.lang.ClassCastException:java.lang.String中不能轉換爲[Ljava.lang.String;

我調用此方法是這樣的:

String[] temp = split(str, "::"); 

爲了得到內部溫度的分裂,爲以後使用的結果。

STR其是含有iterator.next字符串()。

能否請你告訴我,我該怎麼辦丟失或誤解?

預先感謝您的寶貴時間,

親切的問候,

回答

1

一個JavaScript名單 Java數組。儘管GWT使用JavaScript列表來模擬Java數組,但這並不意味着它們是同一件事。

相反,你應該從你的方法返回JsArrayString,並用這種方式,或者只是使用String.split的Java版本,它返回一個真正的Java數組。

0

謝謝你的迴應,Colin Alworth。

隨着你的答案,我所做的是以下幾點:

public static final native JsArrayString split(String string, String separator) /*-{ 
    return string.split(separator); 
    }-*/; 

並在Java代碼:

JsArrayString temp = split(str, "::"); 

String agentCode = temp.get(1); (an so forth). 

非常感謝您的幫助,它就像一個魅力:) 。