2016-07-09 2 views
0

나는 다음과 같이 스프링 MVC 컨트롤러에 AJAX 요청을 보내고 :ajax 요청 데이터를 Spring mvc 컨트롤러에 클래스로 보내는 방법은 무엇입니까?

var filters = { 
    visual: visual, 
    Name: params['Name'], 
    Address: params['Address'], 
    documentType: params['documentType'], 
    itemQualifier: getItemQualifier(), 
    itemIdentifier: params['itemIdentifier'], 
    currency: getCurrency(), 
    sellSide: getSellSide() 
}; 

$.ajax({                  
    type: "POST", 
    url: "/reports/savefilters", 
    data: filters, 
    success: function(response) { 
     alert('filters saved successfully: ' + response); 
    }, 
    error: function(e) { 
     alert('Error while saving filters: ' + e.message); 
    } 
}); 
@RequestMapping(value = "/savefilters", method = RequestMethod.POST) 
public @ResponseBody String saveFilters(@RequestParam("visual") String visual, @RequestParam(value = "Name[]", required = false) String[] Name, 
     @RequestParam(value = "Address[]", required = false) String[] Address, @RequestParam(value = "documentType[]", required = false) String[] documentType, 
     @RequestParam("itemQualifier") String itemQualifier, @RequestParam(value = "itemIdentifier[]", required = false) String[] itemIdentifier, @RequestParam("currency") String currency, 
     @RequestParam("sellSide") String sellSide, HttpServletRequest request) 
{ 
    try 
    { 
     System.out.println("saveFilters"); 
     new DisplayService().saveFilters("ID", visual, Name, Address, documentType, itemQualifier, itemIdentifier, currency, sellSide); 
     return "success"; 
    } 
    catch (Exception ex) 
    { 
     return "error occured while inserting/updating db"; 
    } 
} 

내가 대신 같이 보내는 클래스로 모든 인수를 전달하고자합니다.

AJAX 호출에서 클래스로 전달할 수있는 방법 및 스프링 MVC 컨트롤러 코드에서 어떻게받을 수 있습니까? 어떤 제안을 해주시겠습니까? 감사.

+0

가능한 중복 : http://stackoverflow.com/questions/10198335/basic-spring-mvc-data-binding 주석 @RoryMcCrossan에 대한 –

+0

감사합니다. 나는이 포스트가 나의 질문에 대답하지 않는다고 생각한다. 모델 속성을 시도했지만 작동하지 않습니다. – Hemachandra

답변

1

요청 개체를 사용할 수 있으며이를 사용하여 다음과 같이 모든 매개 변수를 가져올 수 있습니다.

public @ResponseBody String saveFilters(HttpServletRequest request){ 

String visual = request.getParameter("visual") 

} 
+0

응답 해 주셔서 감사합니다. 비주얼과 같은 단일 값을 사용하지만 name과 같은 배열 매개 변수는 사용하지 않습니다. 나는 request.getParameterValues ​​() 메소드를 사용하여 배열 값을 얻으려고했으나 얻을 수 없었다. – Hemachandra

+0

배열의 경우 params 배열을 가져 와서 처리해야합니다. Map parameterMap = request.getParameterMap(); http://stackoverflow.com/questions/7312436/spring-mvc-how-to-get-all-request-params-in-a-map-in-spring-controller. 문제가 해결되면 답변을 받아 들여주세요. –

+0

이 키와 값이 둘 다 String 일 때 작동합니다. value가 null 인 경우 value는 partnerName과 같은 배열입니다. – Hemachandra

0

자바 스크립트 변수 인 filters과 일치하는 자바 클래스 만 만들면됩니다.

public class Filters { 
    private String name; 
    private List<String> address; 
    private List<String> documentType; 
    private String itemQualifer; 
    private String itemIdentifier; 
    private String Currency; 
    private String sellSide; 

    // getters and setters must exists but I omitted for brevity. 
} 

MVC 컨트롤러 :

@RequestMapping(value = "/savefilters", method = RequestMethod.POST) 
public @ResponseBody String saveFilters(Filters filters) { 

} 
+0

응답 해 주셔서 감사합니다.이 코드를 사용하면 요청이 spring mvc 컨트롤러에 도달하지 못합니다. – Hemachandra

+0

내 솔루션에 적용 할 때 예외가 발생한다는 의미입니까? – inherithandle

+0

예외가 표시되지 않았지만 요청이 컨트롤러에 도달하지 않았습니다. – Hemachandra

관련 문제