샘플 URL :
../search/?attr1=value1&attr2=value2&attr4=value4
attr1, att2 및 attr4의 이름을 모릅니다.
요청 매개 변수 이름-> 값의 맵에 액세스 할 수있는 한 이와 비슷한 작업을 수행하고 싶습니다.
@RequestMapping(value = "/search/{parameters}", method = RequestMethod.GET)
public void search(HttpServletRequest request,
@PathVariable Map<String,String> allRequestParams, ModelMap model)
throws Exception {//TODO: implement}
Spring MVC로 어떻게 이것을 달성 할 수 있습니까?
답변
다른 답변은 정확하지만 HttpServletRequest 객체를 직접 사용하는 “봄 방법”은 아닙니다. 대답은 실제로 매우 간단하며 Spring MVC에 익숙 할 경우 예상 되는 것입니다.
@RequestMapping(value = {"/search/", "/search"}, method = RequestMethod.GET)
public String search(
@RequestParam Map<String,String> allRequestParams, ModelMap model) {
return "viewName";
}
답변
편집하다
이 데이터를 얻을 수있는 순수한 Spring MVC 메커니즘 이 존재한다는 것이 지적되었다 ( 적어도 3.0에서 ). 다른 사용자의 답변이므로 여기서 자세히 설명하지 않습니다. 참조 AdamGent의 대답 @ 을 참조하십시오.
Spring 3.2 문서에서이 메커니즘은 RequestMapping
JavaDoc 페이지와 JavaDoc 페이지 모두에 언급되어 RequestParam
있지만 이전에는 RequestMapping
페이지 에서만 언급되어 있습니다. 2.5 문서에는이 메커니즘에 대한 언급이 없습니다.
이것은 HttpServletRequest
서블릿 -api jar에 의해 정의 된 객체 에 대한 바인딩을 제거하기 때문에 대부분의 개발자에게 선호되는 방법 일 것 입니다.
/편집하다
를 통해 요청 쿼리 문자열에 액세스 할 수 있어야합니다 request.getQueryString()
.
getQueryString 외에도 query 매개 변수는 request.getParameterMap () 에서 맵 으로 검색 될 수 있습니다 .
답변
HttpServletRequest 객체는 이미 매개 변수 맵을 제공합니다. 자세한 내용은 request.getParameterMap () 을 참조하십시오.
답변
당신은 단순히 이것을 사용할 수 있습니다 :
Map<String, String[]> parameters = request.getParameterMap();
잘 작동합니다
답변
다음은 맵에서 요청 매개 변수 를 가져 오는 간단한 예입니다 .
@RequestMapping(value="submitForm.html", method=RequestMethod.POST)
public ModelAndView submitForm(@RequestParam Map<String, String> reqParam)
{
String name = reqParam.get("studentName");
String email = reqParam.get("studentEmail");
ModelAndView model = new ModelAndView("AdmissionSuccess");
model.addObject("msg", "Details submitted by you::
Name: " + name + ", Email: " + email );
}
이 경우 studentName 및 studentEmail의 값을 각각 이름 및 이메일 변수와 바인딩합니다.
답변
org.springframework.web.context.request.WebRequest
컨트롤러 메소드에서 매개 변수로 사용 하면 메소드가 제공됩니다. getParameterMap()
이점은 애플리케이션을 Servlet API에 고정하지 않으며 WebRequest는 JavaEE 패턴 컨텍스트 오브젝트의 예입니다.
답변
두 가지 인터페이스가 있습니다
org.springframework.web.context.request.WebRequest
org.springframework.web.context.request.NativeWebRequest
기본 서블릿 / 포틀릿 API에 연결하지 않고request/session
속성 요청뿐만 아니라 일반 요청 매개 변수 액세스를 허용합니다. .
전의.:
@RequestMapping(value = "/", method = GET)
public List<T> getAll(WebRequest webRequest){
Map<String, String[]> params = webRequest.getParameterMap();
//...
}
PS는 있다 컨트롤러 PARAMS로 사용할 수 있습니다 인수에 대한 문서.