Java httpServletRequest в массивы - PullRequest
0 голосов
/ 03 июля 2018

У меня есть страница jsp, которая вызывает функцию JavaScript для динамического создания контента, подобного этому:

<input type="text" name="loadLocation1"  id="loadLocation1"  class="loadLocation />
<input type="text" name="loadMagnitude1" id="loadMagnitude1" class="loadMagnitude / >

<input type="text" name="loadLocation2"  id="loadLocation2"  class="loadLocation />
<input type="text" name="loadMagnitude2" id="loadMagnitude2" class="loadMagnitude / >

and so on

Моя цель - получить два отдельных массива списков, содержащих:

[loadLocation1,  loadLocation2,  etc.]
[loadMagnitude1, loadMagnitude2, etc.]

Сейчас у меня есть сервлет, который довольно глупо разделяет данные на два разных массива:

if(req.getParameter("loadLocation1"  ) != null ) {
                beam.appendForceDistance( Double.parseDouble(req.getParameter("loadLocation1"  )));
                beam.appendForce(         Double.parseDouble(req.getParameter("loadMagnitude1" )));


if(req.getParameter("loadLocation2"  ) != null ) {
                beam.appendForceDistance( Double.parseDouble(req.getParameter("loadLocation2"  )));
                beam.appendForce(         Double.parseDouble(req.getParameter("loadMagnitude2" )));

etc.

Который вообще не расширяется. Я посмотрел документацию HttpServletRequest, но без особой удачи. Мне удалось перебрать карту и заставить распечатывать строки ключей и значений, что не сильно помогло, поскольку я не мог разделить результаты по имени класса.

Кроме того, getAttribute () выглядел многообещающе, но когда я вызвал его по запросу:

req.getAttribute("loadLocation")

возвращает ноль.

Есть ли способ разделить два типа данных, основанных на классе, на два разных массива при сохранении порядка?

1 Ответ

0 голосов
/ 03 июля 2018

Нет, это невозможно. Когда форма отправлена, будут отправлены только элементы формы с атрибутом «имя». Порядок останется таким же, так что часть будет решена.

Я бы предложил создать объект с помощью javascript и опубликовать его с помощью ajax.

// One Load object
function Load(args) {
    this.kind = args.kind || null; // Location or Magnitude
    this.value = args.value || null;
    this.clazz = args.clazz || null;
}


    var arr = new Array();
      var loads = document.getElementsByName('load');
   for (var i=0; i< loads.length; i++) {

    arr[i] = new Load({
                kind: loads[i].id,
                value: loads[i].value.
                clazz: loads[i].getAttribute('class').
    });
   }

Используйте JQuery, чтобы опубликовать это:

$.postJSON(getHost() + "save/load",arr, function(data) {

        });

И ваш JSP выглядит так

<input type="text" name="load"   class="loadLocation />
<input type="text" name="load" class="loadMagnitude / >

<input type="text" name="load"  class="loadLocation />
<input type="text" name="load"  class="loadMagnitude / >

Код не проверен или не совершенен, но вы поняли идею, я надеюсь.

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