2014-11-14 6 views
2

struts2 응답에서 ExtJS4에 콤보 박스를 채우려고합니다. 그러나 값은 채워지지 않으며 콤보 박스는 비어 있습니다. json 데이터를 하드 코딩하려고 시도했지만 여전히 작동하지 않습니다. 나는 URL에 actionName를 추가하고 작업을 실행하려고 할 때, Struts2 응답에서 ExtJS4 콤보 박스 채우기

"{'rows': [{'id': '1','name': 'Google' }, {'id': '2','name': 'Microsoft' }, {'id': '3','name': 'Yahoo' }]} " 

내가 서식 패널에서 나는 콤보 상자 항목이 폼 패널이 ..이 오류없는 내가 JSON 데이터를 볼 수 있습니다 like :

{ 
    name: 'bName', 
    xtype: 'combobox', 
    displayField: 'name', 
    valueField: 'id', 
    store: new Ext.data.Store({ 
     fields: [{id: 'id'}, {name: 'name'}], 
     autoLoad: true, 
     proxy: { 
      type: 'ajax', 
      url: 'getBookList', 
      reader: { 
       type: 'json', 
       root: 'rows' 
      } 
     } 
    }) 
} 

다음은 내 struts.xml입니다. I는 같은 데이터를 포함하는 변수에 대한 게터 세터를 어디이어서

<package name="ELM29" extends="struts-default,json-default"> 
    <action name="getBookList" class="com.test.elm.action.Data" 
     method="getBookList"> 
    <result type="json"> 
     <param name="root">data</param> 
    </result> 
    </action> 
</package> 

내가 Book.java를, I는 JSON-플러그인을 사용한 상기 JSON 전송되도록 그대로 파라미터 태그 사용 변수 및 getBookList 메소드를 사용하여 데이터에 값을 할당하고 SUCCESS를 반환합니다.

public String getBookList(){ 
    data= "{'rows': [{'id':'1','name':'Google'},{'id':'2','name':'Microsoft'},{'id':'3','name':'Yahoo'}]} "; 
    return ActionSupport.SUCCESS; 
} 

또한 Ext.data.JsonStore을 사용해 보았지만 도움이되지 않았습니다. 이 문제는 상점 또는 콤보 상자 때문에 발생합니다. 코드에서 무엇이 잘못 되었습니까?

답변

0

JSON is not valid.

" 모든 ' (작은 따옴표) 발생 교체가 유효하려면 (큰 따옴표를, 다음 탈출 : \")

을이 great answer에서 :

공식 JSON 형식은 허용하지 않습니다 문자열은 작은 따옴표로 묶을 수 있지만 구현시이를 받아 들일 수 있습니다.

따라서 일부 라이브러리에서는 작동하지 않으며 일부 라이브러리에서는 작동하지 않습니다.

이제 ExtJS는 후자 중 하나입니다.

+0

감사합니다. json을 변경했지만 출력이 변경되지 않았습니다 ... 콤보가 양식에 채워지지 않습니다. 그러나 form.submit()을 사용하여 .. 결과 객체에서 json을 얻을 수있었습니다. – user777777

+0

'url : 'getBookList'는 확장 기능이 필요하지 않습니까? –

+0

그래, ExtJS와 Struts가 잘 작동하기 때문에 꽤 확신합니다. 그리고 오늘 같은 코드를 시도 할 때, 문제는 저장소를로드하는 것임을 깨달았습니다. 처음으로하고있는 일. 정확히 무엇이 잘못되었는지 찾을 수 없습니다. ( – user777777