[SPRING] GET 매개 변수에 대한 SpringMVC RequestMapping
SPRINGGET 매개 변수에 대한 SpringMVC RequestMapping
URL에서 GET 매개 변수를 처리하도록 RequestMapping을 만드는 방법은 무엇입니까? 예를 들면 나는이 URL을 가지고있다.
http://localhost:8080/userGrid?_search=false&nd=1351972571018&rows=10&page=1&sidx=id&sord=desc
(jqGrid에서)
내 RequestMapping은 어떻게 생겼을 까? HTTP 요청을 사용하여 매개 변수를 가져 오려고합니다.
이것을 시도 :
@RequestMapping("/userGrid")
public @ResponseBody GridModel getUsersForGrid(HttpServletRequest request)
하지만 작동하지 않습니다.
해결법
-
==============================
1.메소드 인수에 @RequestParam을 사용하면 Spring이이 메소드를 바인드 할 수 있고 @ RequestMapping.params 배열을 사용하여 Spring에서 사용할 메소드를 줄일 수도 있습니다. 샘플 코드 :
메소드 인수에 @RequestParam을 사용하면 Spring이이 메소드를 바인드 할 수 있고 @ RequestMapping.params 배열을 사용하여 Spring에서 사용할 메소드를 줄일 수도 있습니다. 샘플 코드 :
@RequestMapping("/userGrid", params = {"_search", "nd", "rows", "page", "sidx", "sort"}) public @ResponseBody GridModel getUsersForGrid( @RequestParam(value = "_search") String search, @RequestParam(value = "nd") int nd, @RequestParam(value = "rows") int rows, @RequestParam(value = "page") int page, @RequestParam(value = "sidx") int sidx, @RequestParam(value = "sort") Sort sort) { // Stuff here }
이 방법으로 Spring은 모든 파라미터가 존재하면 null 검사와 관련 물건으로부터 당신을 저장하면서이 방법을 수행 할 것입니다.
-
==============================
2.@RequestMapping을 다음과 같이 추가 할 수 있습니다.
@RequestMapping을 다음과 같이 추가 할 수 있습니다.
@RequestMapping("/userGrid") public @ResponseBody GridModel getUsersForGrid( @RequestParam("_search") String search, @RequestParam String nd, @RequestParam int rows, @RequestParam int page, @RequestParam String sidx) @RequestParam String sord) {
-
==============================
3.이것은 요청으로부터 모든 매개 변수를 가져옵니다. 디버깅 목적으로 만 :
이것은 요청으로부터 모든 매개 변수를 가져옵니다. 디버깅 목적으로 만 :
@RequestMapping (value = "/promote", method = {RequestMethod.POST, RequestMethod.GET}) public ModelAndView renderPromotePage (HttpServletRequest request) { Map<String, String[]> parameters = request.getParameterMap(); for(String key : parameters.keySet()) { System.out.println(key); String[] vals = parameters.get(key); for(String val : vals) System.out.println(" -> " + val); } ModelAndView mv = new ModelAndView(); mv.setViewName("test"); return mv; }
-
==============================
4.uri를 변경하려는 경우 PathVariable을 사용할 수도 있습니다.
uri를 변경하려는 경우 PathVariable을 사용할 수도 있습니다.
@RequestMapping(value="/mapping/foo/{foo}/{bar}", method=RequestMethod.GET) public String process(@PathVariable String foo,@PathVariable String bar) { //Perform logic with foo and bar }
NB : 첫 번째 foo는 경로의 일부이고 두 번째 foo는 PathVariable입니다.
-
==============================
5.이 경우 내 작품 :
이 경우 내 작품 :
@RequestMapping(value = "/savedata", params = {"textArea", "localKey", "localFile"}) @ResponseBody public void saveData(@RequestParam(value = "textArea") String textArea, @RequestParam(value = "localKey") String localKey, @RequestParam(value = "localFile") String localFile) { }
-
==============================
6.@RequestMapping에 일종의 템플릿을 작성해야합니다.
@RequestMapping에 일종의 템플릿을 작성해야합니다.
http://localhost:8080/userGrid?_search=${search}&nd=${nd}&rows=${rows}&page=${page}&sidx=${sidx}&sord=${sord}
이제 다음과 같이 비즈니스 메소드를 정의하십시오.
@RequestMapping("/userGrid?_search=${search}&nd=${nd}&rows=${rows}&page=${page}&sidx=${sidx}&sord=${sord}") public @ResponseBody GridModel getUsersForGrid( @RequestParam(value = "search") String search, @RequestParam(value = "nd") int nd, @RequestParam(value = "rows") int rows, @RequestParam(value = "page") int page, @RequestParam(value = "sidx") int sidx, @RequestParam(value = "sort") Sort sort) { ............... }
따라서 프레임 워크는 $ {foo}를 적절한 @RequestParam에 매핑합니다.
sort는 asc 또는 desc 일 수 있으므로 enum으로 정의 할 수 있습니다.
public enum Sort { asc, desc }
Spring은 열거 형을 매우 잘 처리합니다.
from https://stackoverflow.com/questions/13213061/springmvc-requestmapping-for-get-parameters by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 MVC 컨트롤러 테스트에서 Service 클래스를 모의 수 없습니다 (0) | 2019.01.08 |
---|---|
[SPRING] Spring RestTemplate에서 SSL 인증서 유효성 검사 사용 안 함 (0) | 2019.01.08 |
[SPRING] Spring 3.0은 세션 속성을 설정하고 가져온다. (0) | 2019.01.08 |
[SPRING] 스프링 보안 3에서 새로운 역할과 권한을 동적으로 생성하기 3 (0) | 2019.01.08 |
[SPRING] 핸들러 예외에 대한 어댑터가 없습니다. (0) | 2019.01.08 |