Spring mvc 带有动态加载列def的YUI数据表

Spring mvc 带有动态加载列def的YUI数据表,spring-mvc,datatable,yui,Spring Mvc,Datatable,Yui,我正在做一个项目,前端使用YUI数据表来显示一些数据。我使用的是SpringMVC框架,控制器将从数据库获取数据,并以JSON格式返回给视图 我的数据源是一个返回JSON数据的url。但是,由于JSON数据是从我从数据库中提取的数据生成的。因此,datatable的列号不是固定的 有没有一种方法可以从数据源动态加载ColumnDef来呈现数据表 下面是我在sample.jsp中尝试的一种处理简单数据的方法,但不知何故它不起作用: <script type="text/javascript"

我正在做一个项目,前端使用YUI数据表来显示一些数据。我使用的是SpringMVC框架,控制器将从数据库获取数据,并以JSON格式返回给视图

我的数据源是一个返回JSON数据的url。但是,由于JSON数据是从我从数据库中提取的数据生成的。因此,datatable的列号不是固定的

有没有一种方法可以从数据源动态加载ColumnDef来呈现数据表

下面是我在sample.jsp中尝试的一种处理简单数据的方法,但不知何故它不起作用:

<script type="text/javascript">
YAHOO.util.Event.addListener(window, "load", function() {
    YAHOO.example.Basic = function() {
        var myData = {"userInfo":[
                                   {"name":"Smith, Paul","age": "7","level":"","experience":"31","subtotal":"$0.00"},
                                   {"name":"Jones, Steve","age":"","level":"","experience":"60","subtotal":"$0.00"},
                                   {"name":"Dow, James","age":"","level":"","experience":"31","subtotal":"$0.00"},
                                   {"name":"Reid, Jake","age":"","level":"","experience":"6","subtotal":"$10.00"},
                                   {"name":"Smith, Nancy","age":"34","level":"3r","experience":"8","subtotal":"$0.00"}
                               ]};

    function getColumns(o, key) {
        var k, cols = [], value = o[key][0];

        if (value && typeof value === 'object') {
            for (k in value) {
                if (value.hasOwnProperty(k)) {
                    getColumns(value, k);
                    if (value.constructor !== Array) {
                        cols.push(k);
                    }
                }
            }
        }

        return cols;
    }

    var myColumns = getColumns(myData, "userInfo");

    var myDataSource = new YAHOO.util.DataSource(myData);
    myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
    myDataSource.responseSchema = {
            fields: columns
        };
    var myDataTable = new YAHOO.widget.DataTable("dataTable",
            myColumns, myDataSource, {initialLoad: true, caption: tableCaption});

    return {
        oDS: myDataSource,
        oDT: myDataTable
    };

}();

YAHOO.util.Event.addListener(窗口,“加载”,函数(){
YAHOO.example.Basic=函数(){
var myData={“userInfo”:[
{“姓名”:“史密斯,保罗”,“年龄”:“7”,“级别”:“经验”:“31”,“小计”:“0.00美元”},
{“姓名”:“琼斯,史蒂夫”,“年龄”:“级别”:“经验”:“60”,“小计”:“0.00美元”},
{“姓名”:“陶氏,詹姆斯”,“年龄”:“级别”:“经验”:“31”,“小计”:“0.00美元”},
{“姓名”:“里德,杰克”,“年龄”:“级别”:“经验”:“6”,“小计”:“10.00美元”},
{“姓名”:“史密斯,南希”,“年龄”:“34”,“级别”:“3r”,“经验”:“8”,“小计”:“0.00美元”}
]};
函数getColumns(o,键){
var k,cols=[],value=o[key][0];
if(value&&typeof value==='object'){
用于(k值){
if(值hasOwnProperty(k)){
getColumns(值,k);
if(value.constructor!==数组){
cols.push(k);
}
}
}
}
返回cols;
}
var myColumns=getColumns(myData,“userInfo”);
var myDataSource=newyahoo.util.DataSource(myData);
myDataSource.responseType=YAHOO.util.DataSource.TYPE\u JSARRAY;
myDataSource.responseSchema={
字段:列
};
var myDataTable=newyahoo.widget.DataTable(“DataTable”,
myColumns,myDataSource,{initialLoad:true,caption:tableCaption});
返回{
oDS:myDataSource,
oDT:myDataTable
};
}();
}))


嗨!你介意评论一下为什么不使用YUI 3吗?我老板说YUI 3很烂,所以我使用YUI 2。。