Невозможно обновить объект формы, который является частью Arraylist через Javascript

Мне нужно обновить атрибут в formBean, который является частью ArrayList в formBean, когда пользователь устанавливает или снимает флажок с флажка.
Значение атрибута по умолчанию установлено в "on" в formBean перед загрузкой страницы.
Когда пользователь снимает отметку Я пытаюсь сделать значение равным "off".
Я могу увидеть, что значение изменилось на "off" с помощью отладчика firebug, но при отправке значение объекта формы всегда остается "on".

Мой код JSP ниже. Пожалуйста, дайте мне знать, если я неправильно устанавливаю значение.

Приложение Struts

Логика отображения в JSP:

    <input type="checkbox"
           name="importedFiles[<c:out value='${stts.count - 1}'/>].importEnabled"
           id="importedFiles[<c:out value='${stts.count - 1}'/>].importEnabled"
           onClick="replicateCheckbothis, <c:out value='${stts.count - 1}'/> )"
           <c:if test="${importedFiles.importEnabled != null}">checked</c:if> />

Мы пытаемся изменить значение importEnabled, которое является частью arrayList importedFiles в maintainDownloadForm во время отправки через JS. Пожалуйста, найдите ниже используемую логику:

function checkSelectedAndImport()
{
    var anyClicked = "none";

    for(var i = 0; i < <c:out value='${maintainDownloadForm.importedFileLength}' />; i++)
    {
        var element = document.getElementById("importedFiles[" + i + "].importEnabled");

        if(element != null)
        {
            if(element.checked)
            {
                anyClicked = "true";
                element.setAttribute('value', 'on'); alert('Selected--->'+element.getAttribute('value'));
            }
            else
            {
                element.setAttribute('value', 'off');
                alert('Not Selected--->'+document.getElementById("importedFiles[" + i + "].importEnabled").value);

            }
        }
    }

    if(anyClicked != "none")
    {
        submitDGForm(getVMWareForm(),'saveImport');
    }
    else
    {
        alert("No rows have been selected for import. Please select data to import. To cancel the import, click on cancel.");
    }
}

В приведенной выше логике мы можем перейти в цикл else, когда пользователь снимает флажок и печатает alert, как и ожидалось, но то же самое не обновляется с атрибутом формы importEnabled, поскольку он всегда остается "on", как это было до загрузки страницы.

Пожалуйста, дайте мне знать, если есть какие-либо проблемы с логикой кодирования, а также исправить то же самое, так как это было бы очень полезно.


person user1639434    schedule 31.08.2012    source источник


Ответы (1)


К сожалению, я думаю, что вы не можете. Решение, которое я использую, состоит в том, чтобы сохранить массив строк (String []) в форме и использовать javascript для добавления (или удаления) некоторых скрытых входных данных в HTML DOM, все с именем массива строк формы. Эти скрытые входы имеют значение, которое позволяет мне однозначно идентифицировать, какие чекбоксы выбраны пользователем.

person JML    schedule 03.09.2012