>Java >java지도 시간 >Ajax를 사용하여 요청 본문의 여러 변수를 Spring MVC 컨트롤러에 전달할 수 있습니까?

Ajax를 사용하여 요청 본문의 여러 변수를 Spring MVC 컨트롤러에 전달할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-10 02:04:021079검색

Can You Pass Multiple Variables in a Request Body to a Spring MVC Controller Using Ajax?

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

요청 본문의 여러 변수를 Spring에 전달하려고 할 때 Ajax를 사용하는 MVC 컨트롤러의 경우 지원 객체 내에 변수를 묶어야 하는지에 대한 질문에 직면할 수 있습니다.

원래 쿼리에서는 다음 접근 방식을 사용하여 이를 달성하려는 욕구를 표현했습니다.

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

딜레마는 @RequestBody가 단일 개체에 매핑해야 하므로 요청 본문에서 여러 매개변수를 사용하는 것이 어렵다는 점입니다.

앞서 언급한 홀더 개체와 관련된 해결 방법은 유효한 솔루션이지만, Map 객체를 사용하는 대체 접근 방식도 있습니다.

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

이 방법은 요청 본문에 전달된 여러 변수를 처리하는 유연한 방법을 제공하여 맵 키를 통해 해당 변수에 액세스할 수 있도록 합니다.

추가로 , 전체 JSON 트리로 작업하기 위해 Jackson의 ObjectNode에 바인딩하려는 경우 다음을 활용할 수 있습니다.

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

이러한 대안을 사용하면 요청 본문에서 여러 변수를 처리할 수 있는 다양한 옵션을 얻을 수 있습니다. 특정 요구 사항에 가장 적합한 접근 방식을 선택할 수 있는 유연성.

위 내용은 Ajax를 사용하여 요청 본문의 여러 변수를 Spring MVC 컨트롤러에 전달할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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