2013-11-26 2 views
0

Я разрабатываю приложение GWT, и я получаю список, содержащий результат запроса select. Этот запрос выбора имеет строки. Каждая строка имеет каждый элемент, отделенный от предыдущего и следующего символом «::».Ошибка метода разделения GWT JSNI

Я пытаюсь разбить его с помощью String.split, но для выполнения требуется возраст. Я прочитал, что в настоящее время (я использую GWT 2.5.1), метод String.split его довольно искажен, иногда почти в x1000 раз больше, чем метод JSNI для выполнения; поэтому я принял такой подход.

метод

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 из своего метода и использовать его таким образом или просто использовать версию Java String.split, которая возвращает реальный массив Java.

0

Благодарим за отзыв, Колин Алворт.

С вашим ответом, что я сделал это следующим образом:

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). 

Спасибо большое за помощь, он работает как шарм :) ,