2012-08-14 2 views
0

jsp에는 메서드 action = "POST"가 있습니다. 처음에는이 jsp가 URL에서 쿼리 문자열 param1 = paramValue1을 사용하여 컨트롤러 (스프링)를 통해 호출됩니다. (예 : /thisJsp.jsp?param1=paramValue1). Spring은 GET 메서드를 사용하여 쿼리 매개 변수를 읽습니다.양식 필드 대신 쿼리 매개 변수를 읽는 POST 메서드

나중에 숨겨진 양식 입력란 $ ('# param1') .val (paramValue2)을 설정하여 자바 스크립트를 submit() 할 것입니다.

내 문제는 Controller로 돌아가서 method 액션이 POST이지만, request.getParameter ("param1")을 수행 할 때 을 등록하면 항상 paramValue1을 반환합니다.

Fiddler를 사용하면 param1 = paramValue2가 등록되어 submit()에서 설정된다는 것을 알 수 있습니다.

무엇이 누락 되었습니까?

나는 2.0.7

답변

0

당신이 POST가 진행되는 URL을 볼 수 톰캣 서버와 스프링을 사용하고 있습니다? 양식에 '조치'속성이 설정되어 있거나 설정되어 있지 않을 수 있습니다. 설정되지 않은 경우 페이지가 현재있는 것과 동일한 URL로 POST됩니다. 이렇게하면 쿼리 문자열에서? param1 = paramValue1을 사용하여 URL로 POST하지만, 게시 본문에 param1 = paramValue2가있는 상황이 발생할 수 있습니다. 해당 조치가 조회 문자열없이 "/thisJsp.jsp"로 설정되도록 양식을 변경할 수 있으며 이는 문제점을 해결할 수 있습니다.

일반적으로 동일한 명명 된 매개 변수가 GET 또는 POST 요청에 두 번 이상 포함될 수 있습니다. 컨트롤러의 request.getParameterValues ​​("param1")를 호출하여 String 배열을 반환 해 볼 수도 있습니다. 이것은 param1의 두 값을 실제로 전달하는지 확인하는 좋은 테스트입니다.

+0

컨트롤러에서 : request.getMethod()는 POST를 반영하고 request.getParameterValues는 [0] = paramValue1 [1] = paramValue2 ... 항목으로 돌아갑니다. 그러나 POST가 여전히 [0] 항목을 반환하는 이유는 무엇입니까? – user1346699

+0

param1 = paramValue1을 포함하는 쿼리 문자열로 URL에 게시 중이기 때문에. 따라서 param은 두 번 지정됩니다. 한 번은 쿼리 문자열에, 한 번은 게시물 본문에 지정됩니다. 서버는이 두 값을 모두 읽습니다. 폼의 "action"속성을 쿼리 문자열없이 컨트롤러의 URL로 설정하면 모두 설정해야합니다. 덕분에 jfrank. – jfrank

+0

"action"속성을 설정하면 해결되었습니다. – user1346699

관련 문제