Struts2页面没有从复选框返回正确的值

时间:2014-09-24 14:36:44

标签: javascript html struts2

我有一个表单,其中包含两部手机的各种电话信息,包括两个复选框,对应于我的操作类中的布尔值。如果用户输入两个相同的电话号码,则以下javascript会自动设置第二个复选框。

if(phone1 != '' && phone1==phone2)
{
    document.getElementById("phone2Type").value = document.getElementById("phone1Type").value;
    document.getElementById("phone2Text").value = document.getElementById("phone1Text").value;
    document.getElementById("phone2Text").checked = document.getElementById("phone1Text").checked;

    if( phone2Type=='CELL' && document.getElementById('phone2Text') != null)
    {       
        document.getElementById('phone2Text').disabled=true;
    }   

    document.getElementById("phone2Type").disabled=true;    
}

与jspx代码一起使用:

<s:checkbox id="phone1Text"
    onclick="javascript:enableTextingBox()" cssClass="phoneText"
    name="phoneInfo.phone1.textOptionSelected" fieldValue="true"
    value="phoneInfo.phone1.textOptionSelected" 
    disabled="%{!phoneInfo.phone1.textOptionEnabled  || inputFieldDisabled}" />

<s:checkbox id="phone2Text"
    onclick="javascript:enableTextingBox()" cssClass="phoneText"
    name="phoneInfo.phone2.textOptionSelected" fieldValue="true"
    value="phoneInfo.phone2.textOptionSelected" 
    disabled="%{!phoneInfo.phone2.textOptionEnabled  || inputFieldDisabled}" />

我看到的问题是,当我使用javascript设置phone2Text等于phone1Text时,相应的布尔值(phoneInfo.phone2.textOptionSelected)未设置。我很困惑,因为当我忘记了javascript并手动选中框时,上面的jspx工作正常。

查看post方法中发送的参数,我看到了:

_checkbox_phoneInfo.phone2.textOptionSelected: "true"

我期望看到的是:

phoneInfo.phone2.textOptionSelected: "true"

我不确定这是Struts2问题还是我不​​熟悉的一些javascript特性。

1 个答案:

答案 0 :(得分:1)

Aleksandr M完全正确。

这是导致我的问题的一行:

document.getElementById('phone2Text').disabled=true;

禁用文本框会导致其值不在POST操作中发送。