合在一起做的时候,问题就多了。
1.
select
count(*) as col_0_0_
from
JBIT.GOODS goods0_
看到上面的sql,马上就会想到,获取所有记录时,面对long型的转换,修改Dao中代码。
Integer.parseInt(session.createQuery(" select count(*) from Goods").uniqueResult().toString())
2.ajax请求时,不报异常,通过浏览器查看状态。
很明显,注意了,看hibernate与struts2有没有配置好,有没有共同的jar包存在,hibernate的xml文件有没有配置。
500 Internal Server Error
3.这个问题是出在jQuery easy ui 上的。看英语,说明rows参数有问题。
Method "setRows" failed for object action.GoodsAction@3c3d683a
先说一下分页的配置。
$('#dg').datagrid({
url : 'goods',
method:'get',
columns : [ [ {
field : 'id',
title : '编号',
width : 100
}, {
field : 'name',
title : '名称',
width : 100
}, {
field : 'price',
title : '价格',
width : 100,
align : 'center'
},{
field : 'opr',
title : '操作',
width : 100,
align : 'center',
formatter : function(value, row, index) {
return "<a href='javascript:oprdata("+
row.id +
")'>删除</a>";
}
}
] ],
fitColumns : true,//自适应宽度,防止水平滚动
iconCls:'icon-search',
striped:true ,//隔行变色
pagination : true,//显示底部分页栏
pagePosition : "bottom",
$('#dg').datagrid({
url : 'goods',
method:'get',
columns : [ [ {
field : 'id',
title : '编号',
width : 100
}, {
field : 'name',
title : '名称',
width : 100
}, {
field : 'price',
title : '价格',
width : 100,
align : 'center'
},{
field : 'opr',
title : '操作',
width : 100,
align : 'center',
formatter : function(value, row, index) {
return "<a href='javascript:oprdata("+
row.id +
")'>删除</a>";
}
}
] ],
fitColumns : true,//自适应宽度,防止水平滚动
iconCls:'icon-search',
striped:true ,//隔行变色
pagination : true,//显示底部分页栏
pageNumber : 1,//pagination : true时才生效
pageSize:10,//每页显示的记录条数,默认为10
//pageSize: defaultPageSize,
pageList: [10,15,30,45],//可以设置每页记录条数的列表
beforePageText: '第',//页数文本框前显示的汉字
afterPageText: '页 共 {pages} 页',
displayMsg: '当前显示 {from} - {to} 条记录 共 {total} 条记录'
pagePosition : "bottom",
rownumbers:true,//行号
loadMsg : "玩命加载中",
singleSelect : true,//只让单选
frozenColumns:[[
{field:'ck',checkbox:true} ]],
title:"商品订单管理"
});
rownumbers:true,//行号
loadMsg : "玩命加载中",
singleSelect : true,//只让单选
frozenColumns:[[
{field:'ck',checkbox:true} ]],
title:"商品订单管理"
});
这样配置是不会出现上面的异常,若少了pageList: [10,15,30,45],就可能报了。
当然了,有的人喜欢把分页的那几个单独的提出来:
var p = $('#dg').datagrid('getPager');
$(p).pagination({
pageNumber : 1,//pagination : true时才生效
pageSize:10,//每页显示的记录条数,默认为10
//pageSize: defaultPageSize,
pageList: [10,15,30,45],//可以设置每页记录条数的列表
beforePageText: '第',//页数文本框前显示的汉字
afterPageText: '页 共 {pages} 页',
displayMsg: '当前显示 {from} - {to} 条记录 共 {total} 条记录'
});
注意了,这样写,肯定是没问题,但是如果你在pageList: [10,15,30,45],写了pageList: [5,10,15,30,45],那么第一页依旧还是显示的是默认值10条记录。这时你就需要写额外的代码控制只出现5行了。麻烦。
4.Json 数据的struts的配置。
<package name="default" namespace="/" extends="json-default">
<action name="goods" class="action.GoodsAction" method="execute">
<result type="json">
<param name="root">map</param>
</result>
</action>
还有action的写法,也贴出来。
public class GoodsAction extends ActionSupport {
private int page;
private int rows;
private Map<String ,Object> map;
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getRows() {
return rows;
}
public void setRows(int rows) {
this.rows = rows;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
/**
* @return
*/
public String execute() {
if (page<=0) {
page=1;
}
map=new HashMap<String, Object>();
IGoodsBiz biz=new GoodsBizImpl();
int totalCount=biz.findCount();
List<Goods> list=biz.findPage(page, rows);
map.put("total", totalCount);
map.put("rows", list);
System.out.println(totalCount);//测试用
System.out.println(list.size());//测试用
return SUCCESS;
}
}
贴一个删除的方法。先设置。
{
field : 'opr',
title : '操作',
width : 100,
align : 'center',
formatter : function(value, row, index) {
return "<a href='javascript:oprdata("+
row.id +
")'>删除</a>";
}
}
jquery 方法。ajax请求
function oprdata(id){
if (confirm(“确认删除吗?”)) {
.get(“deleteGoods”, {“id”:id}, function(data){
if(data==1){
//刷新数据(‘#dg’).datagrid(‘reload’);
}
}
)};
“`
不得不提的是,上面的配置分页时,如果你写了method:’get’,在某些时候,比如对数据做了增删改,数据已经修改了,但是页面不刷新,考虑将get换成post,或者直接去掉。亲测有效。
做的时候,一步一个脚印,先分析逻辑,再写代码,项目还是很好写的。

本文解决了一个基于Struts2与Hibernate技术的项目中遇到的分页问题,包括SQL查询优化、Ajax请求调试、jQuery EasyUI配置及JSON数据交互等关键步骤。
5618

被折叠的 条评论
为什么被折叠?



