Есть код:
ListGrid catsGrid = new ListGrid();
catsGrid.setEmptyMessage("Load...");
catsGrid.setWidth("30%");
ListGridField nameField = new ListGridField("name", "Category");
catsGrid.setFields(new ListGridField[] {nameField});
String result="{\"error\": null, \"id\": 1, \"result\": [{\"name\": \"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e\u0442\"}, {\"name\": \"\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043e\u0446\u0435\u043d\u043e\u043a\"}]}";
JSONValue value = JSONParser.parse(result).isObject().get("result");
JSONArray catsAry = value.isArray();
JavaScriptObject jsObj = catsAry.getJavaScriptObject();
Record[] recs = Record.convertToRecordArray(jsObj);
catsGrid.setData(recs);
catsGrid.draw();
и набор:
Eclipse + GWT Plugin, Smart GWT 2.0, Google Chrome 4.0.288.1 dev (and previous).
В debug режиме он отрабатывает нормально, но после компиляции ListGrid не отображает строки в Хроме (отображает только одну пустую строку), в остальных браузерах нормально (IE 7, Last Firefox, Opera 10), но так как я пользуюсь хромом - сразу наткнулся на данный баг.
Тему на форуме поддержки создал, посмотрим, что подскажут разработчики.
Update. Ничего не подсказали, но я нашел проблему. Она в функции convertToRecordArray.
Точнее в условии "if (JSOHelper.isArray(nativeArray))".
public static native boolean isArray(JavaScriptObject jsObj)/*-{
return $wnd.isA.Array(jsObj);
}-*/;
В hosted mode функция возвращает true, а после компиляции в браузерах с webkit возвращает false в моем случае.
Даже не знаю почему это происходит, не хочу лезть в дебри, это занимает много времени, может напишут разработчики.
Update2. Посоветовали писать тесты. Ну хоть на этом спасибо :)
я с этим смартгвт напарился! не отвечают на форуме, уйма незадокументированных особенностей. Сам буду всё на чистом гвт писать
ОтветитьУдалитьСогласен, документация хромает, showcase красив, но слишком узок в примерах.
ОтветитьУдалить