EXT中的数据读取

[color=red][size=large]现在要达到的一个目的是 显示一个信息页面A(grid),里面的数据信息是通过Action得到的数据集(ArrayList)[/size][/color]

我现在做个一个Action 可以得到一个ArrayList并 setAttrbute到request中。并且返回到了一个页面B中,B 将ArrayList转换成了JSON 数据格式并且 输入到 B的页面中。

我怎么能让A得到这些数据呢?
var store = new Ext.data.Store({
proxy : new Ext.data.HttpProxy({
method:'get',
url : '../display.do'
//url : '/display.do' !NO!
//url : 'display.do' !NO!
//url : 'http://localhost:8080/Prj5_3/display.do'
})
这个里面的url可以让他做Action吗?

工程我打了个包 非常感谢你的指点~

[b]问题补充:[/b]
js代码如下:

[code="js"]

/**
 * 生成列模型
 */
var cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), {
    // 用户编号
    header : '学号',
    dataIndex : 'stuId',
    sortable : true
}, {
    // 用户真实姓名
    header : '姓名',
    dataIndex : 'stuName',
    sortable : true
}, {
    // 用户性别
    header : '性别',
    dataIndex : 'stuSex',
    sortable : true
}, {
    // 用户所在部门名称
    header : '出生年月',
    dataIndex : 'stuBir',
    sortable : true
},{
    // 操作列
    header : '家庭住址',
    dataIndex : 'stuAdd'
}]);

/**
 * 声明数据适配器,将数据源与列模型绑定
 */
var store = new Ext.data.Store({
    proxy : new Ext.data.HttpProxy({
        method:'get',
        url : '../display.do'
        //url : '/display.do'    !NO! 
        //url : 'display.do'       !NO!
        //url : 'http://localhost:8080/Prj5_3/display.do'
    }),
    reader : new Ext.data.JsonReader({
        totalProperty : 'totalProperty',
        root : 'root'
    }, [{
        name : 'stuId',
        mapping : 'stuId'
    }, {
        name : 'stuName',
        mapping : 'stuName'
    }, {
        name : 'stuSex',
        mapping : 'stuSex'
    }, {
        name : 'stuBir',
        mapping : 'stuBir'
    }, {
        name : 'stuAdd',
        mapping : 'stuAdd'
    }])
});

/**
 * 生成Bbar,用于分页显示
 */
var bbar = new Ext.PagingToolbar({
    pageSize : 10,
    store : store,
    displayInfo : true,
    displayMsg : '显示第{0}条到{1}条记录,一共{2}条',
    emptyMsg : '没有记录'
});

/**
 * 声明一个Grid,列表显示信息
 */
var grid = new Ext.grid.GridPanel({
    el : 'UIgrid',
    title : '用户信息',
    height : 430,
    trackMouseOver : false,
    loadMask : {
        msg : '正在加载数据,请稍后.....'
    },
    ds : store,
    cm : cm,
    sm : new Ext.grid.RowSelectionModel(),
    bbar : bbar

});



// =================================渲染呈现========================================
/**
 * 渲染呈现Grid,Store初始化
 */
grid.render();
store.load({
    params : {
        start : 0,
        limit : 10
    }
});

})

[/code]

我好像没有定义回调函数,怎么用的啊?我看那个龙门镖局的例子里面是这样的。所以我就照着写的

[b]问题补充:[/b]
忘记说了 我在显示页面A的时候并没有触发Action事件~~~~即根本没有做Servlet的doGet

[b]问题补充:[/b]
url : '/Prj5_3/display.do' 现在确实能调用Action了 但是前台页面读取不到返回的内容~~~~郁闷

有以下几个问题
没有触发Action的原因是因为你的请求路径写错了
[code="js"]
var store = new Ext.data.Store({
url : '/Prj5_3/display.do',//可以这样,或者url:'display.do',当你前面加了一个斜杠的时候就是直接引用到跟路径了,类似http://localhost:8080/display.do 这样你肯定就请求不到了.所以这里一定要注意
reader : new Ext.data.JsonReader({
totalProperty : 'totalProperty',
root : 'root'
}, [{
name : 'stuId',
mapping : 'stuId'
}, {
name : 'stuName',
mapping : 'stuName'
}, {
name : 'stuSex',
mapping : 'stuSex'
}, {
name : 'stuBir',
mapping : 'stuBir'
}, {
name : 'stuAdd',
mapping : 'stuAdd'
}])
});
[/code]

其次
[quote]return new ActionForward("/DB2JSON.jsp");[/quote]
你这里没有必要跳转到另外一个单独的jsp页面去处理json数据,你完全就可以再这个Action方法里面处理,最后Action返回空就可以了 return null;
如果你喜欢放到jsp页面去处理的话,Action最后的返回语句也不用
return new ActionForward("/DB2JSON.jsp"); 这样写,在Action方法里面已经给你传递过来一个ActionForward对象了.不比在新建一个对象
[code="java"]public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
//.....
return mapping.findForward("/Prj5_3/DB2JSON.jsp");//这样写就可以了,注意你这里路径又写错了.系统会找不到DB2JSON.jsp这个页面的.

}[/code]
另外你很多地方命名不规范,比如jsp页面的命名最好都小写,项目名称最好小写,例如(prj5_3/db2json.jsp) 这样是规范的写法

可以呀,url写一个action,然后让action来处理,处理完结果会回调你的js方法的

[code="java"]

GridPanelFil = function(conf){

var config = {
};

Ext.apply(config,conf);

GridPanelFil.superclass.constructor.call(this,config);

}

Ext.extend(GridPanelFil,Ext.grid.GridPanel,{

    /**
     * @public
     * 请求数据 ../admin/filter!loadColumnsInfo.html
     * @param {} url
     * @param {} params
     */
    loadData : function(url,params){
         this.store.proxy= new Ext.data.HttpProxy({
              url:url,
              method:"POST"
           });
         this.store.baseParams=params;
         this.store.load();
    }

);

引入上面那个js文件后 ;

这么使用:

var config = {

grid的配置

}
var grid = new GridPanelFil(config);
grid.loadData("url",params);//请求后台数据

[/code]

上头那个 是封装好的

如果要做扩展 请自己加方法

你给的附件里面不包括后台的数据库,所以我也没有办法继续帮你测试下去!

至少能够访问到你的Action了.因为在Action里面是要查询数据到list里面.这个你附件中没有.如果你使用的是struts2,你可以使用json-plugin ,如果使用的是struts1你可以使用JsonArray这个第三方的包.若都不是,你可以自己来解析查询出来的数据.

正确的json字符串的格式应该为
"{'totalProperty':3,'root':[{key:value},{key:value},{key:value}]}"