Сериализируйте объект в GWT

Проблема в том, что вы создали основной проект dotnet, но podio - это проект фреймворка dotnet. Попробуйте вместо этого воссоздать свой проект в качестве фреймворка dotnet. Вместо Console App (.NET Core) выберите Console App (.NET Framework) при создании нового проекта.

6
задан Mihai Limbășan 8 April 2009 в 15:47
поделиться

6 ответов

Отказ от ответственности: Сериализация bean-компонента в URL не такая уж хорошая идея для GWT. Я узнал, что если нужно поместить данные в URL, их должно быть как можно меньше и только то, что необходимо для восстановления состояния вашей страницы. Посмотрите, как Gmail использует свои маркеры истории, и вы увидите, что он довольно минимален.

С этим отказом от ответственности:

Для проекта GWT, над которым я работал, я просто записал значения компонента, разделенные разделителем. При чтении значений обратно я использовал метод String.split (), чтобы получить массив. С этим массивом я присваиваю значения обратно свойствам правого бина. В коде:

public class Sample {

    private int a;
    private boolean b;
    private String c;
    //getters and setters for fields not shown

    public String toHistoryToken(){
        return a+"/"+b+"/"+c;
    }
    public void fromHistoryToken(String token){
        String[] values=token.split("/");
        a=Integer.parseInt(values[0]);
        b=Boolean.parseBoolean(values[1]);
        c=values[2];
    }
}

Для более сложных сценариев вам, возможно, придется делать более сложные вещи. Например, для вложенных объектов необходимо написать код для передачи значений дочерним объектам.

Кроме того, Имейте в виду, что вы должны убедиться, что любые значения, которые вы используете, не содержат разделитель. Поэтому, если вы знаете, что ваши строки могут содержать «/», вам, возможно, придется выполнить операцию замены (), чтобы избежать вложенных разделителей.

4
ответ дан 17 December 2019 в 02:33
поделиться

Я не уверен, что понимаю, чего вы в конечном итоге пытаетесь достичь.

Если вы действительно просто хотите чтобы отправлять строки туда и обратно, вам не нужно ничего делать - вы получаете это бесплатно, используя обычный механизм GWT RPC. Просто создайте метод, который возвращает java.lang.String , создайте сопутствующую реализацию и интерфейс Async, и все готово.

Если, с другой стороны, вы действительно хотите отправить бин, просто убедитесь, что он имеет конструктор с нулевым аргументом и реализует Serializable или IsSerializable .

1
ответ дан 17 December 2019 в 02:33
поделиться

The closest that I could find was this:

Faster GWT startup with objects embedded in the HTML host page

1
ответ дан 17 December 2019 в 02:33
поделиться

Может быть, это то, что вы ищете?

Json <-> сериализация Java, которая работает с GWT

Расширенная версия:

Использование библиотеки Json-lib:

http://json-lib.sourceforge.net/

Вы можете сделать это (перейти от бина к строке json):

http://json-lib.sourceforge.net/snippets.html#Creating_a_JSONObject_from_a_JavaBean

0
ответ дан 17 December 2019 в 02:33
поделиться

В конечном итоге GWT работает в JavaScript (даже если он написан на Java). В этом смысле «Java-бины» - это не те вещи, которые вы легко можете найти в клиенте, но они отлично работают на сервере (в Java).

Если вы признаете, что bean-компонент - это на самом деле просто объект без методов, то у вас есть намерение в их использовании для перемещения данных. Исходно из JavaScript, JSON действует как чрезвычайно гибкий контейнер для данных. На стороне сервера массив Beans может быть преобразован в JSON с помощью BeanUtils (и немного прохождения). JSON можно сериализовать в GWT в виде строки, а в GWT есть анализатор для преобразования JSON обратно в объекты JavaScript для клиента.

Вероятно, это не самый простой способ сделать это, но он очень гибок, как только он заработает.

0
ответ дан 17 December 2019 в 02:33
поделиться

Могут быть некоторые нюансы GWT, которые усложняют вещи, но обычно такие вещи, как:

  • Привязка / отображение данных XML библиотеки, такие как JAXB и XStream могут сделать это
  • С помощью JSON библиотеки, такие как Джексон , могут выполнять гибкую полную привязку bean-компонентов, аналогично JAXB, но с еще меньшим конфигурация (и более высокая скорость, если это вообще имеет значение).

должен работать.

0
ответ дан 17 December 2019 в 02:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: