0

我有jsp,它有方法action="POST"。最初,这个 jsp 通过一个控制器(Spring)在 URL 中使用查询字符串 param1=paramValue1 调用。(例如 /thisJsp.jsp?param1=paramValue1)。Spring 在这里使用了 GET 方法,因此会读取查询参数。

后来我会通过javascript设置一个隐藏的表单输入字段$('#param1').val(paramValue2)来提交()。

我的问题是回到控制器,它注册方法操作是 POST,但是当我执行 request.getParameter("param1") 时,它总是返回 paramValue1。

使用 Fiddler,我看到 param1=paramValue2 已注册,这意味着它是在 submit() 上设置的。

我错过了什么?

我正在使用 Tomcat 服务器和 Spring 2.0.7

4

1 回答 1

0

你能看到 POST 要去的 URL 吗?您的表单可能会或可能不会设置其“操作”属性。如果没有设置,那么它将 POST 到页面当前所在的相同 URL。这可能会导致您发布到查询字符串中带有 ?param1=paramValue1 的 URL,但随后在帖子正文中也有 param1=paramValue2 的情况。您可以更改表单,以便将其操作设置为“/thisJsp.jsp”而没有查询字符串,这可能会解决您的问题。

通常,在请求中多次包含相同的命名参数是有效的,无论是 GET 还是 POST。您也可以尝试在控制器中调用 request.getParameterValues("param1") ,这将返回一个字符串数组。这将是一个很好的测试,看看您是否确实传递了 param1 的两个值。

于 2012-08-14T20:31:58.920 回答