Включить динамически созданный виджет GWT в другую веб-страницу - PullRequest
1 голос
/ 04 марта 2010

У меня есть следующее требование: на основе некоторого пользовательского ввода мне нужно создать HTML-форму, которую пользователь может встроить в отдельное веб-приложение. Я думал об этом с GWT, так как я знаком с ним.

Я полностью разбираюсь в разборе ввода и генерации виджетов. Чего я не знаю, так это как экспортировать скомпилированный код корневого виджета (скорее всего, Panel), чтобы пользователь мог взять код и включить его на какую-то другую страницу.

Что-то вроде:

String rootPanelCode = rootPanel.exportCode();
Dialog codeDialog = new DialogBox();
codeDialog.setText(rootPanelCode);

Затем пользователь копирует отображаемый код в некоторый HTML-файл:

<script type="text/javascript" language="javascript">
    //copied code goes here
</script>

Требование определенного <div id="required_id" /> в файле HTML не является проблемой. Или, может быть, javascript-кода недостаточно, и пользователь должен загрузить zip-файл с js- и html-файлами, скопировать их в каталог и сослаться на них на странице. Это опять не проблема.

Возможен ли мой вариант использования с GWT?

Заранее спасибо.

1 Ответ

1 голос
/ 04 марта 2010

Я бы сказал ... нет :) Главным образом потому, что при запуске приложения GWT оно сначала запускает файл начальной загрузки, который, в свою очередь, выбирает конкретную перестановку для текущего браузера. Таким образом, код, который вы получите, может включать некоторые вещи, которые не будут работать во всех браузерах. Этот может быть побочным, если предоставить какой-то "легкий" файл / метод boostrap для загрузки, но я сомневаюсь, что это сработает.

Кроме того, полученный вами JS-код сильно оптимизирован (а в GWT 2.0 JS-файл содержит JS, CSS и даже изображения), например, когда возможные строки помещаются в переменные по соображениям производительности - но эти переменные обычно группируются вместе и поместить в одно место в скомпилированном файле JS, так что даже если вы сможете каким-то образом добраться до кода, который создает вашу форму, он может содержать ссылки на некоторые неопределенные переменные. Другими словами, скомпилированный код предназначен для использования в целом.

Более «элегантное» решение (и, что более важно, выполнимое с GWT;)) состоит в том, чтобы экспортировать форму в какую-то абстрактную форму / язык, например, в JSON, чтобы вы могли легко анализировать / воссоздавать ее в другой сети. приложение:

{
    "form1": [
        { "label1": "value1" },
        { "label2": "value2" } 
    ]
}  

Хм, я только что подумал о возможном взломе. При правильном использовании разбиение кода это может возможно отделить код, отвечающий за создание формы - но это будет сделать это возможно проще для "экспорта", это не полное решение (и я бы не рекомендовал это ... просто интересный / возможный взлом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...