Создание динамических форм ввода данных

У меня есть небольшой проект, в котором я хотел бы создавать динамические формы ввода данных с небольшой логикой.

Простым вариантом использования может быть результирующая форма «Футбол», поэтому у вас есть кнопка для бомбардира, и при нажатии пользователю будет предложено выбрать игрока. Затем форма отправит сообщение (возможно, в веб-службу, но, возможно, в очередь JMS) с данными события. например Барселона, Цель, Анри.

Затем я хочу создать аналогичную форму для тенниса...

Моя идея заключалась в том, чтобы создать веб-сервис, в котором вы определяете бизнес-логику. (события, компоненты, действия, которые вы выполняете и т. д.) Первоначально я думал, что отправлю определение спорта из веб-сервиса в формате xml. Затем напишите приложение для анализа xml и динамического создания экрана ввода данных.

Сначала я думал написать веб-сервис и вернуть данные xml. (что будет выглядеть ужасно), тогда технология рендеринга может быть гибкой / флэш-памятью и быть тонким клиентом.

Затем я подумал, что будет так же просто создавать формы, как и java-приложение, используя структуру приложения Swing, и это был путь.

Затем я подумал, что вместо того, чтобы писать XML-схему для описания java-форм, могу ли я просто сериализовать класс java и отправить его по сети.

Оказавшись на этом пути, я теперь задаюсь вопросом, должна ли просто java-инфраструктура, а динамические формы стать классом, который вызывается отражением.

Мне бы хотелось получить отзывы о вышеупомянутых подходах и о том, как люди в stackoverflow решат эту проблему.

Благодарность

Дэйвид.


person David Turner    schedule 23.05.2009    source источник


Ответы (2)


Я бы избегал сериализации, потому что она немного хрупкая, ее трудно сделать безопасно и трудно диагностировать.

Вы говорите, что это небольшой проект, так что метаданные действительно должны передаваться от клиента к серверу? Не лучше ли было бы просто написать метаданные (на самом деле код) в виде Java-кода?

(FWIW, мой первый коммерческий проект Java создавал формы динамически из спецификации базы данных (с регулярными дополнениями). До этого я работал с C++, запуская интерпретатор для обучающих систем. В обоих случаях я бы сейчас (и в последнее десятилетие) написали их как Java. Не пугайтесь людей, которые неодобрительно бормочут о «жестком коде».)

person Tom Hawtin - tackline    schedule 23.05.2009

Я бы также рассмотрел XForms. Он позволяет вам определять как модель данных, так и пользовательский интерфейс в виде XML, и все, что вам нужно для их отображения на стороне клиента, — это веб-браузер. Я предполагаю, что событие будет отправлено на удаленный сервер, что делает веб-браузер естественным выбором.

Это позволит вам создавать пользовательский интерфейс на сервере в зависимости от того, о каком спортивном событии хочет сообщить пользователь, поэтому вы можете легко добавлять новые формы, исправлять ошибки и т. д. без необходимости обновлять клиентское программное обеспечение.

Кстати, я не понимаю ваших опасений по поводу использования XML. На мой взгляд, это жизнеспособный вариант для вашего варианта использования.

person Zsolt Török    schedule 23.05.2009