2012-08-14 78 views
0

我有jsp,其方法action =“POST”。 最初,这个jsp通过一个控制器(Spring)调用,URL中的查询字符串param1 = paramValue1。 (例如/thisJsp.jsp?param1=paramValue1)。 Spring在这里使用了GET方法,所以查询参数被读取。POST方法读取查询参数而不是表单字段

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

我的问题是回到控制器,它注册的方法操作是POST,但当我做request.getParameter(“param1”)时,它会始终返回paramValue1。

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

我错过了什么?

我使用Tomcat服务器和Spring 2.0.7

回答

0

你可以看到,POST将会网址是什么?您的表单可能会或可能没有设置“操作”属性。如果没有设置,则它会POST到当前页面的相同URL。这可能会导致您在POST字符串中查询字符串中的?param1 = paramValue1,但在发布主体中也有param1 = paramValue2。您可以更改表单,使其操作仅设置为“/thisJsp.jsp”而不带查询字符串,这可能会解决您的问题。

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

+0

from控制器:request.getMethod()反映POST和request.getParameterValues返回项目[0] = paramValue1 [1] = paramValue2 ...但为什么POST仍然返回[0]项目? – user1346699 2012-08-14 20:39:54

+0

因为您使用包含param1 = paramValue1的查询字符串发布URL。所以param被指定了两次:一次在查询字符串中,一次在post主体中。服务器读取这两个值。将表单的“action”属性设置为控制器的URL,而不需要任何查询字符串,并且应该全部设置。 – jfrank 2012-08-14 21:32:04

+0

感谢jfrank。设置“动作”属性解决了它。 – user1346699 2012-08-15 14:30:03

相关问题