为什么我的Spring 3 POST参数加倍?

时间:2013-10-23 20:04:09

标签: spring spring-mvc spring-3

我有一个Spring 3带注释的控制器和一个带有提交的表单。 JSP有3个隐藏字段,我们在POST时传递提交字段:

<form:form method="POST">
    <h2>param1: <c:out value="${command.param1}"/></h2>
    <h2>param2: <c:out value="${command.param2}"/></h2>
    <h1 style="display: inline">Server time: </h1><h1 style="display: inline" class="serverTime"><c:out value="${command.time}"/></h1>

    <form:hidden path="param1"></form:hidden>
    <form:hidden path="param2"></form:hidden>
    <form:hidden class="serverTime" path="time"></form:hidden>

    <input type="submit" value="Next page"/>
</form:form>

这与此控制器中注册的方法相关联,如下所示:

@RequestMapping(method = RequestMethod.POST)
    public String processSubmit(
            Customer model, BindingResult result, SessionStatus status) {
            Calendar calendar = Calendar.getInstance();
        model.setTime(calendar.getTime().toString());
        return "test/testFinish";
}

客户有3个字符串字段,param1,param2,time。 一切似乎都没问题,但是processSubmit()调用时的模型有两倍的数据...对于2/3字段:

param1: value1,value1
param2: value2,value2
time: Wed Oct 23 12:57:38 PDT 2013

所以时间很好,但是param1和2加倍了。

为什么会这样?


@RequestMapping(method = RequestMethod.GET)
public String initForm(HttpServletRequest request, ModelMap model) {
    ChrisTestFinish chrisTestFinish = new ChrisTestFinish();
    chrisTestFinish.setParam1(request.getParameter("param1"));
    chrisTestFinish.setParam2(request.getParameter("param2"));
    Calendar calendar = Calendar.getInstance();
    chrisTestFinish.setTime(calendar.getTime().toString());

    model.addAttribute("command", chrisTestFinish);
    return getViewName();
}

这是呈现设置上面显示的JSP的视图的控制器。


好的,所以我查看了表单生成的操作:form tag:

action="/chris/test1.htm?param1=value1&amp;param2=value4"

并且意识到由于某种原因,该模型正在使用value1,value4的两个副本构建,一个来自形式的隐藏输入:隐藏,一个来自该行,我相信。

我摆脱了2个隐藏的输入和工作,但我不知道发生了什么的真正根本原因,所以如果有人想解释我会很感激

0 个答案:

没有答案