我一直在将基于Java的webapp转换为学习Spring的一种方式。我有一个JSP,其中正在打印一个大的数据表。我使用函数将封装在HTML表行中的数据的大字符串返回给JSP,并将其存放在滚动div中。
我想用JQuery EasyUI DataGrid代替,但我对Ajax、JQuery和JSON也很陌生,所以我对如何使用它有点抓狂。
这是如何使用JQuery EasyUI DataGrid设置空表和列标题的示例:
<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功能:
$('#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将需要像这样包装的数据行
{"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的好方法。
我不想问这么大的“告诉我如何”的问题,但我一直无法找到更多的信息,通过谷歌,我是新的东西,我正在使用。
提前感谢您的帮助祝您周末愉快
史蒂夫
发布于 2012-06-25 06:47:31
你很接近“得到它”。您所缺少的唯一东西是从控制器方法(即生成JSON)返回什么。这篇博客文章给出了一个很好的例子,说明了您需要做什么。
在您的示例中,您需要创建两个模拟DataGrid期望的JSON输出的Java:
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注释)。
https://stackoverflow.com/questions/11163143
复制相似问题