我有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
答案 0 :(得分:0)
你能看到POST的URL吗?您的表单可能会也可能不会设置其“操作”属性。如果未设置,则它将POST到页面当前所在的相同URL。这可能导致您在查询字符串中使用?param1 = paramValue1 POST到URL的情况,但在帖子正文中也有param1 = paramValue2。您可以更改表单,使其操作设置为“/thisJsp.jsp”而不使用查询字符串,这可能会解决您的问题。
通常,在请求(GET或POST)中多次包含相同的命名参数是有效的。您也可以尝试在控制器中调用request.getParameterValues(“param1”),它将返回一个字符串数组。这将是一个很好的测试,看看你是否确实传递了param1的两个值。