2014-11-07 4 views
5

나는 /check을 통해 스프링 컨트롤러를 호출하는 jsp 페이지에 ajax을 가지고 있습니다. 내가 모델을 사용하여 데이터를 전송하고 "${alreadySaved}"success: function(data)에 액세스하려고ajax로 스프링 컨트롤러에서 데이터를 가져 오는 방법은 무엇입니까?

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

처럼

$.ajax({ 
    type : "GET", 
    url : "${pageContext.request.contextPath}/check", 
    data : { 
    "id" : ${articleCount} 
    }, 
    success: function(data){ 
    //response from controller 
    } 
}); 

지금, 컨트롤러는 보이지만 그것은 빈 보여줍니다.

보기 페이지에서 true/false 데이터를받을 수있는 방법이 있습니까? 당신은 봄 아약스의 @ResponseBody 주석을 추가 할 필요가

답변

5

예를 호출 당신은 봄 아약스의 @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; 
    } 
} 
+0

좋아요를 JSP로 렌더링 것이기 때문에. 보기 측면에서 어떻게 대응할 수 있습니까? – Sujan

+0

data.alreadySaved – Madhesh

+0

data.alreadySaved는 jsp에서 정의되지 않은 내용을 표시합니다. – Sujan

0

컨트롤러 부분

예를 호출

보기 부

$.ajax({ 
    type : "GET", 
    url : "${pageContext.request.contextPath}/check", 
    data : { 
     "id" : ${articleCount} 
    }, 
    success: function(data){ 
     $('#input_field').val(data); 
    } 
}); 
0

값 f를 반환하려고 할 때 ajax 요청을 사용하려면 @ResponseBody 주석을 사용해야합니다. 메소드 반환 유형이 String이므로 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); 
} 
+0

하지만 그 방법으로보기 때문에 봄, jsp로드 할 수 없기 때문에보기를 반환해야합니다. – Sujan

+0

@najus 아약스의 개념은 페이지의 일부분을 리프레쉬하는 것이 아니므로 리턴 값만을 보내는 것으로 충분하다. 동일한 페이지를로드하는 중 –

관련 문제