Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Формирование большого xml из request 
:(
    Опции темы
4epT
Дата 15.3.2012, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Добрый вечер всем! На странице есть большая форма для ввода данных, полей для ввода более 100 + кол-во может динамически менятся. При сабмите все данные уходят на сервер, там нужно все эти данные преобразовать в XML документ. Способ указанный ниже думаю отпадает, так как не красиво.

Код

String field1 = request.getParameter("field_1");
String field2 = request.getParameter("field_2");
String field3 = request.getParameter("field_3");
...


Как бы Вы это сделали ? Наиболее красиво и универсально.

Есть еще варианты написать класс, поля класса поментить аннотациями с указанием имени input и потом по Map пройтись и заполнить поля.

Может еще кто то подкинет идей ?)
PM MAIL   Вверх
Chort409
Дата 15.3.2012, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 31.7.2008

Репутация: нет
Всего: нет



Можно пересылать все данные как один json объект, и на сервере преобразовать в класс и дальше делать с ним что хочешь.
Будет выглядить примерно так :
Код

 Gson gson = new GsonBuilder().create();
 instance_of_class = gson.fromJson(json_string, new TypeToken<class_name>(){}.getType());

PM MAIL   Вверх
4epT
Дата 15.3.2012, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Цитата(Chort409 @ 15.3.2012,  22:11)
Можно пересылать все данные как один json объект, и на сервере преобразовать в класс и дальше делать с ним что хочешь.
Будет выглядить примерно так :
Код

 Gson gson = new GsonBuilder().create();
 instance_of_class = gson.fromJson(json_string, new TypeToken<class_name>(){}.getType());

Вы представляете формирование такого json на клиенте ? Там очень большой объем данных ...
PM MAIL   Вверх
jk1
Дата 16.3.2012, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 5
Всего: 75



Цитата

Как бы Вы это сделали ? Наиболее красиво и универсально.

Сделайте класс с полями, называющимися аналогично компонентам формы. После сабмита на сервере пройдитесь циклом по мапе параметров и установите при помощи reflection поля класса по названию. Таким образом код от количества полей зависеть не будет. Можно даже еще упростить код, использовав вместо громоздкого reflection BeanUtils из ApacheCommons.

То есть на сервере будет что-то в духе:

Код

 Container container = new Container();
 Map map = request.getParameterMap();
 for (Object key : map.keySet()){
      BeanUtils.setProperty(container, key.toString(), map.get(key));
  }


набросал второпях в качестве примера, надо конечно причесать слегка.
Дальше можно сбросить класс в XML при помощи JAXB.

Это сообщение отредактировал(а) jk1 - 16.3.2012, 08:38


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0764 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.