GWT Overlay Tpes проверяет наличие нуля - PullRequest
0 голосов
/ 03 августа 2011

Я использую типы наложения GWT для анализа моего ответа JSON с веб-сервера. Все работает нормально, проблема в том, что если обязательное поле не существует:

Пример: Класс оверлейного типа JavaScriupt

public class JSWorkplace extends JavaScriptObject{    
protected JSWorkplace() {        
}
public final native String getWidgets() /*-{
    return this.Widgets;
}-*/;

теперь, если у меня что-то вроде {"Widgets": "Bla"} приходит с сервера, все в порядке, getWidgets возвращает "Bla". Если это "{}" исходит от сервера, мое приложение добавляет функцию gwtWidgets. Как я могу проверить, существует ли поле «Виджеты» перед его чтением.

С уважением, Stefan

1 Ответ

0 голосов
/ 03 августа 2011

Вы можете проверить, не определено ли что-то вроде: this.Widgets == undefined. Лично я предпочитаю устанавливать значения по умолчанию после eval(). Например, чтобы создать ваш объект JSWorkplace, я бы вызвал такой метод:

public static native JSWorkspace createFromJSON(String json)/*-{
  var object = eval('(' + json + ')');
  if (object.Widgets == undefined) { object.Widgets = []; }

  ...

  return object;
}*-/;
...