Spring形式改变了值,未在ModelAttribute中反映出来

时间:2014-07-13 19:56:43

标签: java javascript spring-mvc modelattribute spring-form

我有以下表格

<form:form id="form" name="form" target="dummyHiddenForm"  method="post" commandName="myForm" >

            <span class="container">
                <label>TestKey</label>
                <span class="container-right">
                    <form:input path="key" id="key" cssClass="text" maxlength="200" cssStyle="width:60%" disabled="true"/>
                    <input type="button" class="refreshIcon" style="width:auto;" onclick="javascript:refreshKey()" />
                </span>
            </span>

    <span style="width:auto; padding-left: 30%; padding-bottom: 4%; text-align:center; float:right; clear:both;">
        <input type="button" class="button" style="width:auto;" value="Submit" onclick="javascript:submitForm()"/>
    </span> 

</form:form>

<iframe id="dummyHiddenForm" name="dummyHiddenForm" style="display:none;" ></iframe>

在包含表单的上页的GET请求中,我为对象myForm的每个变量设置了一些默认值,key设置为值""。 我的refreshKey()的java脚本函数是

function refreshKey(){
    document.getElementById('key').value = generateKey() ; 
}

此方法正常工作,onclick在输入文本字段中设置新键。

点击提交按钮我使用java脚本提交表单

function submitForm(){
        var formVar = document.forms["form"];
        formVar.action = "/test.htm";
        formVar.submit();
}

但是在我的控制器中,无论输入字段的实际值如何,我都会获得相同的默认值""

我尝试使用javascript alert.value我可以看到更改后的值,但实际DOM中的值没有变化(至少当我从firefox检查元素时它仍显示{{1} })。

我需要在提交表单时获取更改的值。有什么建议会出错?

1 个答案:

答案 0 :(得分:0)

找出解决方法。该问题是由于残疾财产引起的,即disabled="true"。虽然java脚本具有访问权限并且可以修改输入的value属性,但在提交spring表单时不会反映该属性。我怀疑在开始时模型属性绑定没有问题。关闭已禁用的attribue可以正常工作。

但是,如果您仍想使输入字段不可编辑,则可以设置另一个属性readonly,您可以将其设置为true。使用javascript更改值,该值将反映在表单提交的模型属性中。

<form:input path="key" id="key" cssClass="text" maxlength="200" cssStyle="width:60%" readonly="true"/>