2013-09-27 3 views
0

스프링 컨트롤러는 json 출력을 반환하여 extJs 콤보 박스를 채 웁니다. 스프링 3.0.2를 사용 중이며 잭슨 2.2.3 라이브러리가 포함되어 있습니다.스트리밍 json back from spring

컨트롤러 클래스 :

@RequestMapping(value="getStates.json", method = RequestMethod.GET) 
    public @ResponseBody Map<String,? extends Object> loadStates() { 

     HashMap<String, List<State>> modelMap = new HashMap<String,List<State>>(); 
     modelMap.put("states", stateService.getBrazilianStates()); 
     System.out.println("Returning : " + modelMap.size()); 
     return modelMap; 
    } 

는 ExtJS는 :

Ext.onReady(function(){ 

    var store = new Ext.data.Store({ 
     proxy: new Ext.data.HttpProxy({ 
      url: 'getStates.json' 
     }), 
     reader: new Ext.data.JsonReader({ 
      root:'states' 
     }, 
     [{name: 'code'}, 
     {name: 'name'} 
     ]) 
    }); 

    var combo = new Ext.form.ComboBox({ 
     id: 'statesCombo', 
     store: store, 
     displayField: 'name', 
     valueField: 'code', 
     hiddenName : 'codeId', 
     typeAhead: true, 
     mode: 'local', 
     fieldLabel: 'States of Brazil', 
     anchor: '100%', 
     forceSelection: true, 
     triggerAction: 'all', 
     emptyText:'Select a state...', 
     selectOnFocus:true 
    }); 

콤보 박스 드롭 다운 그러나 비어 있습니다.
무엇이 잘못 되었나요?
나는 @http : //responsebody 어노테이션으로 어떤 명시적인 매핑을 필요로하지 않을 것으로 예상했다.

+0

컨트롤러에 modelMap이 채워 졌습니까? – shazinltc

+0

예 - 그럴 수 있습니다. 어떻게 응답 본문을 출력 할 지 모르겠습니다. – IUnknown

+1

curl을 사용하여 "생각한"전화를 시뮬레이션하거나 Chrome 개발자 도구 또는 Firefox의 Firebug를 사용하여 실행중인 응용 프로그램의 요청/응답 쌍을 확인하십시오. 확률은 요청이 당신이 생각한 곳으로 가지 않거나, 응답이 당신이 생각한 것을 포함하고 있지 않거나, 뭔가가 JS에 엉망이되어 요청을 올바르게 처리하지 못하거나하는 것입니다. – CodeChimp

답변

0

나는 messageconverters에 jackson 변환기를 추가하지 않았다.