0

我需要更新一个属性,formBean该属性是用户选中或取消选中复选框时ArrayList的一部分。 该属性的值默认设置为在页面加载之前。 当用户取消选中时,我试图将值设为. 我能够看到更改为使用 firebug 调试器的值,但在提交时,表单对象的值始终保持不变。formBean
"on"formBean
"off"
"off""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> />

我们正在尝试在通过 JS 提交期间更改importEnabled其是 arrayListimportedFiles的一部分的值。maintainDownloadForm请在下面找到使用的逻辑:

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"在页面加载之前的情况。

请让我知道编码逻辑是否有任何问题以及相同的修复,因为它会非常有帮助。

4

1 回答 1

0

不幸的是,我认为你不能。我使用的解决方案是在表单中保留一个字符串数组(String[]),并使用 javascript 向 HTML DOM 添加(或删除)一些隐藏的输入,所有这些都使用表单字符串数组的名称。这些隐藏的输入有一个值,可以让我唯一地识别用户选择了哪些复选框。

于 2012-09-03T08:05:44.057 回答