请教:extjs的grid如何得到后台struts传来的JSON数据 - Web 开发 / Ajax请教,刚用ext。我根据网上的例子,自
请教:extjs的grid如何得到后台struts传来的JSON数据 - Web 开发 / Ajax
请教,刚用ext。我根据网上的例子,自己写了,前后台代码,但是gridpanel中总显示不出数据。。
前台是:
JScript codeExt.onReady(function() { Ext.QuickTips.init(); var note = Ext.data.Record.create([ {name: 'nodeId'}, {name: 'title'}, {name: 'context'} ]); var ds = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: "listNote.action", method:"POST" }), render:new Ext.data.JsonReader({ totalProperty:"results", root:"rows", id:"nodeId" },note) }); ds.setDefaultSort('nodeId', 'desc'); [color=#FFFF00]ds.load();[/color].....
在struts.xml中定义是XML code <package name="note" extends="json-default"> <action name="listNote" class="noteAction" method="jsonExecute"> <result type="json"></result> </action> </package>
在spring中定义我就不贴了。
后台action类中定义是public String jsonExecute() throws Exception {
JSONArray jarray = new JSONArray();
JSONObject job = null;
try{
List list = service.findAll();
Iterator i = list.iterator();
while (i.hasNext())
{
job = new JSONObject();
Object[] obj = (Object[]) i.next();
job.put("nodeId", obj[0]);
job.put("title", obj[1]);
job.put("context", obj[2]);
jarray.add(job);
}
}catch(Exception e){
job.put("success", false);
job.put("error", e.getMessage());
return ERROR;
}
this.setTotalCount(4);
String allStudentsWithJson = "{\"results\":" + this.getTotalCount()
+ ",\"rows\":";
allStudentsWithJson += jarray.toString();
allStudentsWithJson += "}";
outputResult(allStudentsWithJson);
return NONE;
}
/**
*
* 向浏览器输入json数据串
*
*@param json数据串
*@return
*/
public void outputResult(String result) {
HttpServletResponse response = ServletActionContext.getResponse();
try {
System.out.println(result);
response.setContentType("text/json; charset=gb2312");
response.getWriter().println(result);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
action中返回的json数据格式是:
{"results":4,"rows":[{"nodeId":"1","title":"11","context":"22"},{"nodeId":"2","title":"11","context":"22"},{"nodeId":"3","title":"11","context":"22"},{"nodeId":"4","title":"11","context":"22"}]}
在gridPanel中显示不出json数据是怎么回事。。。
[解决办法]1:你定义的record 加上mapping属性
2:ds。load 在 gridpanel之后
试一试
[解决办法]
var ds = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: "listNote.action",
method:"POST"
}),
render:new Ext.data.JsonReader({
totalProperty:"results",
root:"rows",
id:"nodeId"
},note)
});
卧槽 render:new Ext.data.JsonReader({大哥是reader啊