>Java >java지도 시간 >Ajax와 함께 @RequestBody를 사용하여 Spring MVC 컨트롤러에 여러 매개변수를 전달하는 방법은 무엇입니까?

Ajax와 함께 @RequestBody를 사용하여 Spring MVC 컨트롤러에 여러 매개변수를 전달하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-11 12:47:021066검색

How to Pass Multiple Parameters to a Spring MVC Controller using @RequestBody with Ajax?

Ajax를 사용하여 @RequestBody의 여러 매개변수를 Spring MVC 컨트롤러에 전달

@를 사용하여 Spring MVC 컨트롤러에 여러 매개변수를 전달하려고 할 때 RequestBody의 경우, 많은 개발자가 지원 개체에 매개변수를 래핑해야 하는지에 대한 질문에 직면합니다.

초기 접근 방식:

처음에는 다음을 수행해 볼 수 있습니다. :

@RequestMapping(value = "/Test", method = RequestMethod.POST)
@ResponseBody
public boolean getTest(@RequestBody String str1, @RequestBody String str2) {}

다음과 같은 JSON 페이로드를 사용하면

{
    "str1": "test one",
    "str2": "two test"
}

그러나 이 접근 방식이 예상대로 작동하지 않을 수 있습니다.

래퍼 객체 접근 방식:

이 문제를 극복하기 위한 다음 접근 방식은 매개변수를 지원 객체로 래핑하는 것입니다.

@RequestMapping(value = "/Test", method = RequestMethod.POST)
@ResponseBody
public boolean getTest(@RequestBody Holder holder) {}

여기에는 다음과 같은 JSON 페이로드가 필요합니다.

{
    "holder": {
        "str1": "test one",
        "str2": "two test"
    }
}

대체 옵션:

또는 RequestMethod를 GET으로 변경하고 쿼리 문자열에 @RequestParam을 사용할 수도 있습니다. 또 다른 옵션은 RequestMethod와 함께 @PathVariable을 사용하는 것입니다.

Map 또는 ObjectNode 사용:

지원 객체로 래핑하는 것이 바람직하지 않은 경우 Map 또는 ObjectNode를 사용할 수 있습니다. @RequestBody에서 여러 매개변수를 바인딩하는 Jackson의 ObjectNode:

@RequestMapping(value = "/Test", method = RequestMethod.POST)
@ResponseBody
public boolean getTest(@RequestBody Map<String, String> json) {
    //json.get("str1") == "test one"
}

또는:

public boolean getTest(@RequestBody ObjectNode json) {
    //json.get("str1").asText() == "test one"
}

위 내용은 Ajax와 함께 @RequestBody를 사용하여 Spring MVC 컨트롤러에 여러 매개변수를 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.