[SPRING] 스프링 mvc에서 컨트롤러에서 아약스로 객체를 반환하는 법
SPRING스프링 mvc에서 컨트롤러에서 아약스로 객체를 반환하는 법
컨트롤러에서 jQuery ajax로 직원 목록을 반환해야합니다. 그것을 위해 어떻게해야합니까?
//controller part
@RequestMapping("phcheck")
public ModelAndView pay(@RequestParam("empid") int empid, String fdate, String tdate) {
ModelAndView mav = new ModelAndView("phcheck");
List<Employee> emp=entityManager.createQuery("select e from Employee e where e.empId="+empid, Employee.class).getResultList();
mav.addObject("emp", emp); <----I need this list of employee in ajax
return mav;
}
보기에있는 Ajax
//Ajax part
$(document).ready(function () {
$("#empid").change(function () {
if ($("#fdate").val() != "" && $("#tdate").val() != "" && $("#empid").val() != "") {
jQuery.ajax({
url: "phcheck.htm?empid=" + $("#empid").val() + "&&fdate=" + $("#fdate").val() + "&&tdate=" + $("#tdate").val(),
success: function (data) {
alert(data + "success");
},
error: function (data) {
alert(data + "error");
}
});
} else {
alert("Please fill the from date and to date or select the employee id");
$("#empid .option").attr("selected", "selected")
}
});
});
미리 감사드립니다.
해결법
-
==============================
1.봄에는 객체 직렬화, 비 직렬화 및 메시지 변환이 필요합니다. 이 경우 @RequestBody 및 @ResponseBody를 사용하여 컨트롤러 처리기 메서드에 주석을 추가해야합니다.
봄에는 객체 직렬화, 비 직렬화 및 메시지 변환이 필요합니다. 이 경우 @RequestBody 및 @ResponseBody를 사용하여 컨트롤러 처리기 메서드에 주석을 추가해야합니다.
어디에:
JSON 유형이 필요한 경우 메소드 서명이나 메소드 바로 위에 @ResponseBody를 추가해야하며 다음과 같이 선택적이며 생성 및 소비해야한다.
@RequestMapping(value="phcheck", method=RequestMethod.GET produces="application/json") public @ResponseBody List<Employee> pay(@RequestParam("empid") int empid, String fdate, String tdate) { //get your employee list here return empList; }
AJAX 호출에서 사용 :
귀하의 경우 contentType : 'application / json'은 필요하지 않습니다. 기본값은 application / x-www-form-urlencoded입니다. charset = UTF-8 '이면 충분합니다.
그리고 AJAX 성공 사례에있는 직원 목록을 받아서 반복 할 수 있습니다.
success: function (data) { $.each(data, function(index, currEmp) { console.log(currEmp.name); //to print name of employee }); },
참고 : JSON 직렬화 및 비 직렬화 작업을 수행하려면 Jackson mapper 또는 다른 매퍼가 빌드 경로에 있어야합니다.
참조 :
-
==============================
2.
@RequestMapping(value = "phcheck", produces = "application/json") @ResponseBody public ModelAndView pay(@RequestParam("empid") int empid, @RequestParam("fdate") String fdate, @RequestParam("tdate") String tdate) { return entityManager.createQuery("select e from Employee e where e.empId="+empid, Employee.class).getResultList(); } url:"phcheck.htm?empid="+$("#empid").val()+"&fdate="+$("#fdate").val()+"&tdate="+$("#tdate").val()
Spring MVC에서는 MappingJackson2HttpMessageConverter를 등록해야한다.
-
==============================
3.ModelAndView는보기를 렌더링 할 계획임을 암시합니다. 객체를 반환하려면 @ResponseBody 주석을 사용하십시오.
ModelAndView는보기를 렌더링 할 계획임을 암시합니다. 객체를 반환하려면 @ResponseBody 주석을 사용하십시오.
@RequestMapping("phcheck") public @ResponseBody List<Employee> pay(@RequestParam("empid") int empid, String fdate, String tdate) { return entityManager.createQuery("select e from Employee e where e.empId="+empid, Employee.class).getResultList(); }
또한 쿼리를 처리하는 방법에 대해 더 신중해야합니다. 쿼리가 안전하지 않으며 SQL 삽입을 허용합니다. 예를 들어 누군가 empId = " '15'또는 '1'= '1'"로 메소드를 호출하면 전체 직원 목록을 리턴합니다.
-
==============================
4.컨트롤러에서 @ResponseBody Type으로 메소드를 만들고 ajax에서 List from success 함수를 사용하십시오.
컨트롤러에서 @ResponseBody Type으로 메소드를 만들고 ajax에서 List from success 함수를 사용하십시오.
Maven을 사용하는 경우 Jackson Mapper 파일을 Pom.xml 파일에 저장합니다.
from https://stackoverflow.com/questions/23267113/how-to-return-object-from-controller-to-ajax-in-spring-mvc by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Autowired 환경이 null입니다. (0) | 2018.12.20 |
---|---|
[SPRING] 페이스 북 토큰을 인증에 사용하는 Stateless REST Endpoint 용 스프링 소셜 인증 필터 (0) | 2018.12.20 |
[SPRING] REST 템플릿을 사용하여 서버에서 대용량 파일 다운로드 Java Spring MVC (0) | 2018.12.19 |
[SPRING] 봄 - 최대 절전 모드 5 명명 전략 구성 (0) | 2018.12.19 |
[SPRING] Spring Boot에서 HTTP OPTIONS 요청을 처리하는 방법은 무엇입니까? (0) | 2018.12.19 |