2016-03-28 5 views
0

Я следую вместе с this постом для создания динамических форм в Struts 1. До сих пор я настроил мои HashMaps в моем ActionForm прочитать эти данные на входе:Как мне отображать и читать записи динамической формы в Struts 1?

public int getCount2() { 
     return count2; 
    } 

    public void setCount2(int count) { 
     this.count2 = count2; 
    } 

    public Map getChildObjects(){ 
     return childObjects; 
    } 

    public void setChild(String key, Object child){ 
     childObjects.put(key, child); 
    } 

    public Object getChild(String key){ 
     return childObjects.get(key); 
    } 

И я поставил эту карту ключи и значения в функции JSP.

var elementCount = parseInt(document.getElementById("count2").value); 

    var textFirstName = document.createElement("input"); 
     ... 
     textFirstName.setAttribute("name","childObjects(FirstName"+ elementCount +")"); 
     ... 

У меня есть скрытое поле «count2» объявлен в HTML, и у меня нет ошибок JSP не придумывают, когда я загрузить страницу или любые вопросы, добавляющие эти элементы документа, но когда я пытаюсь читать данные формы , даже когда я заполняю эти ваулы, отображение возвращается пустым.

Как читать эти данные на своих картах, а затем читать их при отправке моего действия?

ответ

0

Я прошел через пример, но не мог понять, каким образом различные названные элементы DOM могут быть отнесены к HashMap с одним именем, я, е, если есть:

<input type="text" name="name1" /> 
<input type="text" name="name2" /> 

затем файл действия ожидает 2 переменные по имени имя1 и имя2, но если вы можете создать DOM элементов с таким же именем, е:

<input type="text" name="testVal" /> 
<input type="text" name="testVal" /> 

затем в файле действий вы можете создать string[] testVal переменную массива, и вы будете иметь все входные значения заселенных в нем.

исправьте меня, если я ошибаюсь в способе HashMap.

Edit:

Правда, вы не будете в состоянии идентифицировать каждые элементы, и, кстати, это получение имени Опубликованной коды я не думаю, что это возможно:

childObjects(FirstName"+ elementCount +"); 

попробуйте сделать это:

childObjects[elementCount]; 

заменить () with [] и удалить firstName префикс вместе с индексом.

, которому следует присвоить его HashMap по имени childObjects.

Это работает в Struts 2. Предполагая, что он должен работать и в стойках 1.

+0

Если вы сделаете это так, как вы должны идентифицировать каждое входное значение, если используете хэш-карту с ключом? – Zibbobz

+0

См. Отредактированный ответ. –