我是ExtJS 5的新手,这些代码是RESTEasy Restful Web Services。
package com.aaa.rest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
@Path("/services")
public class RESTEasyServices {
@GET
@Path("getJson/{id}")
@Produces("application/json")
public Member sayJsonHello(@PathParam("id") String id){
Member m = new Member();
m.setId(id);
m.setPasswd("aaa");
m.setAge(45);
m.setName("Joseph");
return m;
}
}
这些是Rest请求url和响应json数据。调用成功。
REST网址:http://localhost:8080/RESTfulTestWeb/rest/services/getJson/aupres
回应Json数据:{“id”:“aupres”,“passwd”:“aaa”,“age”:45,“name”:“joseph”}
问题是ExtJS Store对象客户端无法处理上面的json数据。这些是ExtJS客户端代码Ext.define('extjs.model.Member', {
extend: 'Ext.data.Model',
fields : [{
name : 'id',
type : 'string'
}, {
name : 'passwd',
type : 'string'
}, {
name : 'age',
type : 'int'
}, {
name : 'name',
type : 'string'
}]
});
Ext.onReady(function () {
var members = Ext.create('Ext.data.Store', {
model : 'extjs.model.Member',
//autoLoad : true,
proxy: {
type: 'rest',
url : 'http://localhost:8080/RESTfulTestWeb/rest/services/getJson/aupres',
**reader: {
type: 'json',
rootProperty: 'id',
},
writer: {
type: 'json'
},**
listeners: {
exception: function(proxy, response, operation){
Ext.MessageBox.show({
title: 'REMOTE EXCEPTION',
msg: operation.getError(),
icon: Ext.MessageBox.ERROR,
buttons: Ext.Msg.OK
})
}
}
},
listeners: {
load: function(members, operation, success) {
if(success) {
alert('response : ' + members.model.length)
} else {
alert('it failed')
}
}
}
})
var onButtonClick = function() {
members.load()
}
响应如下所示
"response : 0"
似乎我的ExtJS代码无法包含json数据。我猜代理元素的reader和writer属性是错误的。但我不知道请求JSON数据的原因是什么。