spring - POST 方法读取查询参数而不是表单字段

标签 spring tomcat spring-mvc

我有 jsp,它有方法 action="POST"。 最初,此 jsp 通过 Controller (Spring) 在 URL 中使用查询字符串 param1=paramValue1 进行调用。 (例如/thisJsp.jsp?param1=paramValue1)。 Spring在这里使用了GET方法,所以读取了查询参数。

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

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

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

我错过了什么?

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

最佳答案

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

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

关于spring - POST 方法读取查询参数而不是表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11960110/

相关文章:

java - 从 DAO 层向 Controller 抛出异常是好习惯吗?

Spring 中启用 Apache Shiro 注释时未找到 Spring 数据 JPA 存储库

java - 找不到具有多个上下文的属性 :property-placeholder

java - strip 化不同 JAR 中的资源包

java - 无法将 Java 连接到 CONNX : java. sql.SQLException:连接被拒绝:连接

java - 使用@PreAuthorize时的安全配置

java - MongoDB-Java : Not operator and regular expressions

java - 使用java spring和GMail发送电子邮件

apache - 如何在使用 apache mod_proxy 时保持不同的 session

java - Spring REST API,拦截 401 需要完全身份验证