[SPRING] 아약스에 의해 스프링 컨트롤러로부터 어떻게 데이터를 얻을 수 있습니까?
SPRING아약스에 의해 스프링 컨트롤러로부터 어떻게 데이터를 얻을 수 있습니까?
URL / check를 통해 스프링 컨트롤러를 호출하는 jsp 페이지에 아약스가 있습니다.
$.ajax({
type : "GET",
url : "${pageContext.request.contextPath}/check",
data : {
"id" : ${articleCount}
},
success: function(data){
//response from controller
}
});
이제 컨트롤러는 다음과 같이 보입니다.
@RequestMapping("/check")
public String check(@RequestParam Integer id, HttpServletRequest request,
HttpServletResponse response, Model model) {
boolean a = getSomeResult();
if (a == true) {
model.addAttribute("alreadySaved", true);
return view;
} else
model.addAttribute("alreadySaved", false);
return view;
}
모델을 사용하여 데이터를 보내고 성공하면 함수 (데이터)를 "$ {alreadySaved}"로 액세스하려고했지만 빈 상태로 표시됩니다.
보기 페이지에서 참 / 거짓 데이터를 수신 할 수있는 방법이 있습니까?
해결법
-
==============================
1.Spring Ajax 호출 예제에 @ResponseBody 주석을 추가해야한다.
Spring Ajax 호출 예제에 @ResponseBody 주석을 추가해야한다.
@RequestMapping("/check") @ResponseBody public String check(@RequestParam Integer id, HttpServletRequest request, HttpServletResponse response, Model model) { boolean a = getSomeResult(); if (a == true) { model.addAttribute("alreadySaved", true); return view; } else { model.addAttribute("alreadySaved", false); return view; } }
-
==============================
2.ajax 요청에서 값을 반환하려고하면 @ResponseBody 주석을 사용해야합니다. 당신의 메소드 리턴 타입이 String이기 때문에 문자열 값을 반환하고 JSP로 여러분의 뷰를 반환하지 않도록하십시오.
ajax 요청에서 값을 반환하려고하면 @ResponseBody 주석을 사용해야합니다. 당신의 메소드 리턴 타입이 String이기 때문에 문자열 값을 반환하고 JSP로 여러분의 뷰를 반환하지 않도록하십시오.
jsp를 다시 렌더링 할 것이기 때문에
@ResponseBody public String check(@RequestParam Integer id, HttpServletRequest request, HttpServletResponse response, Model model) { boolean a = getSomeResult(); if (a == true) { return "already saved"; } return "error exist"; }
그리고 당신의 JSP에서,
success: function(data){ alert(data); }
-
==============================
3.@ResponseBody 사용
@ResponseBody 사용
@ResponseBody 어노테이션을 추가하면 Spring은 나가는 HTTP 응답 본문에 반환 값을 바인딩합니다.
@ResponseBody public String check(@RequestParam Integer id, HttpServletRequest request, HttpServletResponse response, Model model) { boolean a = getSomeResult(); if (a == true) { return "already saved"; } return "error exist"; }
Spring은 요청 메시지에 사용 된 Content-Type을 기반으로 HTTP 메시지 변환기를 사용하여 반환 값을 HTTP 응답 본문 [응답 본문에 직렬화]으로 변환합니다.
더 많은 정보를 위해서:
http://websystique.com/springmvc/spring-mvc-requestbody-responsebody-example/
-
==============================
4.컨트롤러 부분
컨트롤러 부분
Spring Ajax 호출 예제에 @ResponseBody 주석을 추가해야한다.
부품보기
$.ajax({ type : "GET", url : "${pageContext.request.contextPath}/check", data : { "id" : ${articleCount} }, success: function(data){ $('#input_field').val(data); } });
from https://stackoverflow.com/questions/26795027/how-can-i-get-data-from-spring-controller-by-ajax by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 실제로 각 어댑터를 작성하지 않고 메시지 구동 어댑터 목록을 연결하는 방법은 무엇입니까? (0) | 2019.02.27 |
---|---|
[SPRING] NoSuchMethodException : org.springframework.boot.autoconfigure.http.HttpMessageConverters (0) | 2019.02.27 |
[SPRING] 나는지도의지도가있는 봄 속성 파일을 읽고 싶다. (0) | 2019.02.27 |
[SPRING] 주석 통합 코드를 사용하는 Spring Integration Executor 채널 (0) | 2019.02.27 |
[SPRING] 부모 행을 삭제하거나 업데이트 할 수 없습니다. ConstraintViolationException (0) | 2019.02.27 |