日期:2014-05-17  浏览次数:20653 次

各位大神看看这里需要怎么优化
这是用struts1.3写的Action类,我感觉我写的比较麻烦,但这些参数是必须的,有什么可以改进的吗?
public ActionForward find(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Integer pageNo = 1;
Integer pageCount1 = ed.findParent().size()%5==0?ed.findParent().size()/5:(ed.findParent().size()/5+1);
Integer pageCount2 = ed.findChild().size()%5==0?ed.findChild().size()/5:(ed.findChild().size()/5+1);
Integer pageCount3 = id.findParent().size()%5==0?id.findParent().size()/5:(id.findParent().size()/5+1);
Integer pageCount4 = id.findChild().size()%5==0?id.findChild().size()/5:(id.findChild().size()/5+1);

request.setAttribute("defaulttab1", "default-tab");
request.setAttribute("pageNo1", pageNo);
request.setAttribute("pageNo2", pageNo);
request.setAttribute("pageNo3", pageNo);
request.setAttribute("pageNo4", pageNo);
request.setAttribute("pageCount1", pageCount1);
request.setAttribute("pageCount2", pageCount2);
request.setAttribute("pageCount3", pageCount3);
request.setAttribute("pageCount4", pageCount4);
request.setAttribute("expenseparents", ed.findParentByPage(pageNo));
request.setAttribute("expensechilds", ed.findChildByPage(pageNo));
request.setAttribute("incomeparents", id.findParentByPage(pageNo));
request.setAttribute("incomechilds", id.findChildByPage(pageNo));
return mapping.findForward("to_category");
}

------解决方案--------------------
看见代码的第一眼,我以为是组装对象呢
然后看评论、、、

纳尼?居然是分页
我震惊了!
我的解决方案是:
封装为一个泛型的page类
------解决方案--------------------
建立一个Page对象,
Page{
int pageNo;//当前页码
int recordCount;//总记录数
int recordPerPage;//每页几条记录
List<Object> datas;//当前页数据集

int getPageCount();//获取总页数
}
包含如上属性,仅需设置recordCount和recordPerPage就可通过getPageCount方法取得分页数量,同时该Page还持有pageNo信息,当前分页的数据结果信息。
------解决方案--------------------
个人感觉封装成一个pageBean会方便很多,楼主这样写,代码很不美观啊

public class PageBean {
private List list; // 要返回的某一页的记录列表

private int allRow; // 总记录数
private int totalPage; // 总页数
private int currentPage;// 当前页
private int pageSize; // 每页记录数

private boolean isFirstPage; // 是否为第一页
private boolean isLastPage; // 是否为最后一页
private boolean hasPreviousPage;// 是否有前一页
private boolean hasNextPage; // 是否有下一页
        
       // getter和setter方法...

       

然后提供一些方法判断是否第一页,是否最后一页,计算总页数,计算当前页等等,就可以了,希望有帮助