13 января 2010 г.

SmartGwt. Первые проблемы (ListGrid)

Неприятно, когда в самом начале работы с фреймворком начинаются небольшие косяки. Сразу появляется желание перейти на что-либо еще. А проблема вот в чем:
Есть код:

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. Посоветовали писать тесты. Ну хоть на этом спасибо :)

2 комментария:

  1. я с этим смартгвт напарился! не отвечают на форуме, уйма незадокументированных особенностей. Сам буду всё на чистом гвт писать

    ОтветитьУдалить
  2. Согласен, документация хромает, showcase красив, но слишком узок в примерах.

    ОтветитьУдалить