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 어노테이션으로 어떤 명시적인 매핑을 필요로하지 않을 것으로 예상했다.
컨트롤러에 modelMap이 채워 졌습니까? – shazinltc
예 - 그럴 수 있습니다. 어떻게 응답 본문을 출력 할 지 모르겠습니다. – IUnknown
curl을 사용하여 "생각한"전화를 시뮬레이션하거나 Chrome 개발자 도구 또는 Firefox의 Firebug를 사용하여 실행중인 응용 프로그램의 요청/응답 쌍을 확인하십시오. 확률은 요청이 당신이 생각한 곳으로 가지 않거나, 응답이 당신이 생각한 것을 포함하고 있지 않거나, 뭔가가 JS에 엉망이되어 요청을 올바르게 처리하지 못하거나하는 것입니다. – CodeChimp