>  기사  >  Java  >  지원 객체 없이 @RequestBody를 사용하여 Spring MVC 컨트롤러에 여러 변수를 전달할 수 있나요?

지원 객체 없이 @RequestBody를 사용하여 Spring MVC 컨트롤러에 여러 변수를 전달할 수 있나요?

Linda Hamilton
Linda Hamilton원래의
2024-11-11 12:40:031001검색

Can I Pass Multiple Variables to a Spring MVC Controller with @RequestBody without a Backing Object?

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

질문:

@RequestBody의 여러 변수를 Spring에 전달하는 데 필요한 지원 객체의 매개변수를 래핑하고 있습니까? Ajax를 사용하는 MVC 컨트롤러?

토론:

질문은 @RequestBody에서 두 개의 문자열 "str1"과 "str2"를 JSON으로 전달해야 하는 데서 비롯됩니다. . 그러나 초기 접근 방식:

@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"
    }
}

답변:

지원 객체를 사용하는 것이 실행 가능한 접근 방식이지만 대체 솔루션은 Map 또는 ObjectNode를 사용하여 별도의 객체 클래스를 생성하지 않고 JSON을 사용합니다.

맵:

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

ObjectNode의 경우:

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

위 내용은 지원 객체 없이 @RequestBody를 사용하여 Spring MVC 컨트롤러에 여러 변수를 전달할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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