2014-02-24 2 views
1

여기에 관련 코드가 있습니다. 출력되는 내용은 다음과 같습니다. enter image description hereSpring MVC 애플리케이션에서 Jquery로 여러 매개 변수 Ajax 요청을 보내는 방법?

매개 변수로을 보내려면 region 및 tsrId를 보내야합니다. 여기 내 코드

JSP 여기

이다 JQuery와 여기

<script type="text/javascript"> 
     $(document).ready(function() { 
      var region = document.getElementById('region').value; 
      var tsrId = document.getElementById('tsrId').value; 
      $('#tsrId').autocomplete({ 
       serviceUrl: 'getTsrId.html', 
       data: ({queryData : {region:region,tsrId:tsrId}}), 
       //delimiter: ",", 
       transformResult: function(response) { 
       return {suggestions: $.map($.parseJSON(response), function(item) {return { value: item.name, data: item.id }; 
        })};}});}); 
</script>  

내 아약스 요청은 HTML 양식 여기

<td>Region</td> 
    <td><input type="text" name="region" id="region"><div class="autocomplete-suggestions"></div></td> 
    <td>TSR ID</td> 
    <td><input type="text" name="tsrId" id="tsrId" maxlength="8"><div class="autocomplete-suggestions2"></div></td> 

내 컨트롤러입니다입니다

@RequestMapping(value = "/getTsrId", method = RequestMethod.GET) 
public @ResponseBody List<TSRMaster> getTsrId(@RequestParam String tagName,@RequestBody QueryData queryData) { 
    List<TSRMaster> tsrMasterList=new ArrayList<TSRMaster>(); 
    tsrMasterList=gpsdao.getTsrIdList(queryData.getRegion(),queryData.getTsrId()); 
    return tsrMasterList; 
}  

여기

public class QueryData { 

    private String region; 
    private String tsrId; 

    public String getRegion() { 
     return region; 
    } 
    public void setRegion(String region) { 
     this.region = region; 
    } 
    public String getTsrId() { 
     return tsrId; 
    } 
    public void setTsrId(String tsrId) { 
     this.tsrId = tsrId; 
    } 

} 

이 다른 대체 솔루션이 덕분에 아래의 해당 경로가 언급하시기 바랍니다 issue..is 분류하는 제발 도와주세요 requestMapping

내 빈 클래스입니다.

+0

봄/봄 - mvc 관련이 표시되지 않습니다. 당신은 JQuery 자동 완성 플러그인 – gerrytan

+0

예 사랑하는 gerrytan에 문제가있는 것 같습니다.하지만 그것의 mvc 메서드에 의해 얻지 않습니다. 내 app.jackson 매퍼 콩 오류가 있습니다. 서블릿 xml 파일 –

+0

또한 추가 된 데이터 : ({queryData : {region : tsrId : tsrId}})'사용 의도 '()'? – Vikram

답변

3

지금까지이 작업을 수행하는 유일한 방법은 클라이언트에서 JSON.stringify()으로 전화하여 JavaScript 객체를 JSON 문자열로 변환하는 것입니다. (브라우저 간 호환이 가능하려면 json2.js이 필요합니다.)

그러면 String 매개 변수로 이것을 Spring으로 보내고 Jackson 라이브러리를 사용하여 구문 분석합니다.

샘플 코드 :

자바 스크립트

data: ({queryData : JSON.stringify({region:region,tsrId:tsrId}})), 

자바

RequestMapping(value = "/getTsrId", method = RequestMethod.GET) 
public @ResponseBody List<TSRMaster> getTsrId(@RequestParam String tagName,@RequestParam String queryData) { 

    ObjectMapper myMapper = new ObjectMapper(); 
    QueryData myQueryData = myMapper.readValue(queryData, QueryData.class); 

    List<TSRMaster> tsrMasterList=new ArrayList<TSRMaster>(); 
    tsrMasterList=gpsdao.getTsrIdList(myQueryData.getRegion(),queryData.getTsrId()); 
    return tsrMasterList; 
} 
+0

제발 그게 code.i 함께 표시 할 수 있지만 그 작동하지 않습니다 –

+1

지연에 대한 죄송합니다. 샘플 코드 추가. –

+0

감사합니다. ced-b –

0

당신은 JSON 자바 변환을위한 잭슨 프레임 워크를 사용할 수 있습니다. 그런 다음 아래의 방법을 사용하여보기에서 컨트롤러로 데이터를 보낼 수 있습니다.

프로젝트에 jackson jars를 추가하십시오.

잭슨 코어-2.0.5 잭슨 - 데이터 바인딩-2.0.5 잭슨 - 주석 - 2.0.5

추가 다음 코드 WebApplicationContext.xml

<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean> 
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
    <property name="messageConverters"> 
     <list> 
      <ref bean="jacksonMessageConverter"/> 
     </list> 
    </property> 
</bean> 

Ajax 호출에

$.ajax({ 
     url: getTsrId.html, 
     type: 'GET', 
     data: "region=" + region + "&tsrId=" + tsrId,   
     dataType: "json", 
     success: function(response){ 

//response here 
} 
}); 

컨트롤러

@RequestMapping(value = "/getTsrId", method = RequestMethod.GET,produces="application/json") 
    public @ResponseBody List<TSRMaster> getTsrId(
       @ModelAttribute(value = "queryData") QueryData queryData) { 
     List<TSRMaster> tsrMasterList = new ArrayList<TSRMaster>(); 
     tsrMasterList = gpsdao.getTsrIdList(queryData.getRegion(),queryData.getTsrId()); 
     return tsrMasterList; 
    } 
관련 문제