2010-03-22 10 views
51

게시 데이터 자체를 가져 오는 방법이 있습니까? 나는 봄 객체가 데이터를 자바 객체에 바인딩하는 것을 알고있다. 그러나 두 개의 필드를 처리하려고 할 때 어떻게 그 데이터를 얻을 수 있습니까? 예를 들어Spring MVC에서 명시 적으로 포스트 데이터를 얻는 방법?

이, 내 양식은 두 개의 필드가 있다고 가정 :

<input type="text" name="value1" id="value1"/> 
<input type="text" name="value2" id="value2"/> 
내 컨트롤러에서 그 값을 검색 가겠어요 어떻게

?

답변

99

기본 제공 컨트롤러 인스턴스 중 하나를 사용하는 경우 컨트롤러 메서드에 대한 매개 변수 중 하나가 Request 개체가됩니다. 우편 데이터 값을 얻으려면 request.getParameter("value1")으로 전화하십시오. 당신은 스프링 MVC 주석을 사용하는 경우

, 당신은 당신의 방법의 매개 변수에 주석 매개 변수를 추가 할 수 있습니다

@RequestMapping(value = "/someUrl") 
public String someMethod(@RequestParam("value1") String valueOne) { 
//do stuff with valueOne variable here 
} 
+1

멀티플 요청 매개 변수와 함께 작동합니까? 하나의 객체로 묶을 필요는 없습니까? http://stackoverflow.com/q/12862320/106261 – NimChimpsky

+0

네, 명명 된 매개 변수의 수에 관계없이 작동합니다. –

+0

<3 모델 지원 양식 (검색 양식 또는 문의 양식 등)을 원하지 않거나 필요로하지 않는 경우이 경우 – mmcrae

24

스프링 MVC는 Servlet API 위에서 실행됩니다. 그래서, 당신은 이것에 대한 HttpServletRequest#getParameter()를 사용할 수 있습니다

String value1 = request.getParameter("value1"); 
String value2 = request.getParameter("value2"); 

HttpServletRequest 이미 handleRequest() 방법의 방법 인자의 하나로서 스프링 MVC 안에 당신에게 사용할 수 있습니다.

+1

하이 @BalusC, 내 경우에는 내가 요청에 20 개 이상의 변수를 가지고있다. 그러나 모든 요청 매개 변수가있는 bean이 있습니다. 이제 하나씩 가져 오는 대신 요청에서 모든 값을 bean으로 가져 오려고합니다. "ModelDrivenBean"을 사용하여 struts2에서이 기능을 사용할 수 있습니다. Spring 프레임 워크에서 이와 같은 기능을 가지고 있습니까? – vissu

+2

예, @ModelAttribute 주석과 양식 백업 빈을 사용합니다. 이 링크는 잘 수행하는 방법을 설명합니다. http://viralpatel.net/blogs/2010/07/spring-3-mvc-handling-forms.html –

+0

@vissu 20 개 이상의 변수가 있으면 간단히 살펴 봐야합니다. – CodeMonkey

24
영업의 정확한 질문에 다른 대답이 선언 한 후 "text/plain"consumes 콘텐츠 유형을 설정하는 것입니다

@RequestBody String 입력 매개 변수. 그러면 POST 데이터의 텍스트가 선언 된 String 변수 (다음 예에서는 postPayload)로 전달됩니다.

당연히, 이것은 귀하의 POST 페이로드가 텍스트 데이터라고 가정합니다 (OP가 진술 한대로).

예 :

@RequestMapping(value = "/your/url/here", method = RequestMethod.POST, consumes = "text/plain") 
    public ModelAndView someMethod(@RequestBody String postPayload) {  
     // ...  
    } 
+2

이것은 내가 찾던 답변입니다. '포스트 데이터 그 자체'에 의해 나는 똑같이 이해합니다. 감사! – mauromartini

+0

여러 개의 post params (예 : 'value1'과'value2')의 경우 두 값에 대해 하나의 String을 생성합니까? 그렇다면 개별 값을 구문 분석해야 할 필요가 있을까요? 받아 들인 대답은 무엇입니까? – mmcrae

+1

@mmcrae -이 문제를 해결하기위한 또 다른 방법 일뿐 아니라 여러 POST 매개 변수가없는 다른 사용자에게 유용 할뿐만 아니라 텍스트 나 이진 데이터가 있어야합니다. – simon

관련 문제