首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring 3.1和JQuery EasyUI DataGrid :发送HashMaps列表,示例?

Spring 3.1和JQuery EasyUI DataGrid :发送HashMaps列表,示例?
EN

Stack Overflow用户
提问于 2012-06-22 19:51:12
回答 1查看 9K关注 0票数 1

我一直在将基于Java的webapp转换为学习Spring的一种方式。我有一个JSP,其中正在打印一个大的数据表。我使用函数将封装在HTML表行中的数据的大字符串返回给JSP,并将其存放在滚动div中。

我想用JQuery EasyUI DataGrid代替,但我对Ajax、JQuery和JSON也很陌生,所以我对如何使用它有点抓狂。

这是如何使用JQuery EasyUI DataGrid设置空表和列标题的示例:

代码语言:javascript
复制
<table id="tt" title="Frozen Columns" class="easyui-datagrid" style="width:500px;height:250px"  
            url="data/datagrid_data.json"  
            singleSelect="true" iconCls="icon-save">  
        <thead frozen="true">  
            <tr>  
                <th field="itemid" width="80">Item ID</th>  
                <th field="productid" width="80">Product ID</th>  
            </tr>  
        </thead>  
        <thead>  
            <tr>  
                <th field="listprice" width="80" align="right">List Price</th>  
                <th field="unitcost" width="80" align="right">Unit Cost</th>  
                <th field="attr1" width="150">Attribute</th>  
                <th field="status" width="60" align="center">Stauts</th>  
            </tr>  
        </thead>  
    </table>  

--这就是如何将表连接到javascript功能:

代码语言:javascript
复制
$('#tt').datagrid({  
        title:'Frozen Columns',  
        iconCls:'icon-save',  
        width:500,  
        height:250,  
        url:'data/datagrid_data.json',  
        frozenColumns:[[  
            {field:'itemid',title:'Item ID',width:80},  
            {field:'productid',title:'Product ID',width:80},  
        ]],  
        columns:[[  
            {field:'listprice',title:'List Price',width:80,align:'right'},  
            {field:'unitcost',title:'Unit Cost',width:80,align:'right'},  
            {field:'attr1',title:'Attribute',width:100},  
            {field:'status',title:'Status',width:60}  
        ]]  
    });  

我的第一个问题是,在上面的示例中,在" url“属性中,我会放置像"/getTabularData”这样的url,然后映射到Spring3.1控制器中的函数吗?如果是这样的话,什么会触发DataGrid向该URL发送请求(文档有点简约)。

据我理解,DataGrid将需要像这样包装的数据行

代码语言:javascript
复制
{"total":28,"rows":[
    {"productid":"FI-SW-01","unitcost":10.00,"status":"P","listprice":16.50,"attr1":"Large","itemid":"EST-1"},
    {"productid":"K9-DL-01","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
    {"productid":"RP-SN-01","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Venomless","itemid":"EST-11"},
    {"productid":"RP-SN-01","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Rattleless","itemid":"EST-12"},
    {"productid":"RP-LI-02","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Green Adult","itemid":"EST-13"},
    {"productid":"FL-DSH-01","unitcost":12.00,"status":"P","listprice":58.50,"attr1":"Tailless","itemid":"EST-14"},
    {"productid":"FL-DSH-01","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"With tail","itemid":"EST-15"},
    {"productid":"FL-DLH-02","unitcost":12.00,"status":"P","listprice":93.50,"attr1":"Adult Female","itemid":"EST-16"},
    {"productid":"FL-DLH-02","unitcost":12.00,"status":"P","listprice":93.50,"attr1":"Adult Male","itemid":"EST-17"},
    {"productid":"AV-CB-01","unitcost":92.00,"status":"P","listprice":193.50,"attr1":"Adult Male","itemid":"EST-18"}
]}

这是格式化JSon吗?

我只能找到1-2个简单的示例,说明Spring3.1Controller方法将数据发送回JSON。基本上,唯一不同的地方是返回类型中包含一个@ResponseBody。我发现了这个春季源博客条目,但是作为一个新的我,这是我所无法理解的。还有其他URL可以更详细地介绍如何从Spring发送JSON吗?

现在,我的应用程序正在以LinkedHashMaps列表的形式从我们的数据库中检索数据,然后放到一个自制函数中迭代,将每个LinkedHashMap封装到HTML中,将其全部隐藏到一个StringBuffer中。

如果我要使用JQuery EasyUI DataGrid,那么什么样的方法才是获取EasyUI objs列表、将其导入JSON并将其从Spring返回到jsp和DataGrid的好方法。

我不想问这么大的“告诉我如何”的问题,但我一直无法找到更多的信息,通过谷歌,我是新的东西,我正在使用。

提前感谢您的帮助祝您周末愉快

史蒂夫

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-25 06:47:31

你很接近“得到它”。您所缺少的唯一东西是从控制器方法(即生成JSON)返回什么。这篇博客文章给出了一个很好的例子,说明了您需要做什么。

在您的示例中,您需要创建两个模拟DataGrid期望的JSON输出的Java:

代码语言:javascript
复制
public class ResultSet {
    private long total;
    private List<ResultRow> rows;
    // getters & setters, etc
}

public class ResultRow {
    private Int productid;
    private Float unitcost;
    private String status;
    private Float listprice;
    private String attr1;
    // getters & setters, etc
}

因此,Controller方法将有一个返回类型的ResultSet,并从一些DB查找等中填充ResultRows和ResultSet。然后,Jackson将它的魔力“马歇尔”到JSON中(通过@ResponseBody注释)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11163143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档