Ecside介绍
来源:百度文库 编辑:神马文学网 时间:2024/10/01 10:47:05
Ecside介绍
ECSide是有一个基于jsp tag的开源列表组件. 简单的说,它就是一组可以帮助你快速实现强大的列表的jsp标签. 它的工作原理很简单. 您将要展现的列表的数据集合(Collection),放入request/pagecontext/session内(使用 setAttribute方法.这个工作可以在action/servlet里完成,也可以在jsp页面内完成),然后页面跳转到使用ECSide标签的 jsp页面,此时 ECSide就可以帮助您展现出所需要的列表.主要增强的功能:
1 可设置工具条位置(上下或 不显示)
2 可设置工具条内容(显示哪些 不显示哪些)
3 可设置工具条上各个功能按钮的相对位置
4 增加了调整页大小的选择框,并可自定义选择框内的内容
5 增加了带有邻近页面的导航条
6 增加了可跳转到指定页面的跳转框
7 增加了当前选中行高亮
8 为ec:table 增加了 excludeParameters 和 includeParameters 属性,可以实现更快捷简便的"参数保留/不保留"功能
9 可添加自定义的html代码到工具条内 或其他位置
10 可手动调整列宽
11 增加了"列表内部滚动条"(实现列表头固定,列表体滚动的功能)
12 为ec:row和ec:column 添加更多的html事件支持,现支持:onmouserover prefix="ec" %>
其次, 构建所需的ec:table, 比如一个日志查询模块的表格如下, 至于每一个EcSide组件tag属性意思可以查看帮助使用文档
retrieveRowsCallback="limit"
rowsDisplayed="20"showPrint="true"showTitle="true"
sortRowsCallback="limit"filterRowsCallback="limit"
action="LogServlet?status=selectall"useAjax="true"
pageSizeList="10,20,30,50,100"title="系统日志"showTitle="false"
xlsFileName="系统日志.xls"csvFileName="系统日志.csv"pdfFileName="系统日志.pdf"
sortable="true"filterable="true"resizeColWidth="true">
style="width:100%;"name=""/>
style="width:100%;"name="" />
一般我们还会带查询功能, 该组件支持AJAX方式的查询, 使用ECSideUtil.queryECForm, 其中listFormName为组件Name, 默认为ec
最后, 就是由后台相关的Servlet或Action提供组件所需数据, 供Grid呈现,在
对于大数据量的项目最好写个存储过程支持对数据的分页显示. 后台大致代码如下, 如在Servlet的doPost方法中处理
publicvoid doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String path="Admin/error.htm";
String status = request.getParameter("status");
if(status != null)
{
if("selectall".equals(status) && DAOFactory.CheckUser(request))
{
List all = null;
int currentPage = 1;
int size = 50;
int allRecords = 0;
LogDAO logdao = DAOFactory.getLogDAOInstance();
Limit limit = RequestUtils.getLimit(request);
Sort sort = limit.getSort();
Map sortValueMap = sort.getSortValueMap();
FilterSet filterSet = limit.getFilterSet();
Map filterPropertyMap = filterSet.getPropertyValueMap();
QueryItem queryCondition = new QueryItem();
queryCondition.setType(request.getParameter("txtLogType"));
queryCondition.setBeginDate(request.getParameter("dt1"));
queryCondition.setEndDate(request.getParameter("dt2"));
try
{
allRecords = logdao.getAllCount(sortValueMap, filterPropertyMap, queryCondition);
int[] rowStartEnd=RequestUtils.getRowStartEnd(request, allRecords, size);
if(size > allRecords)
{
currentPage = 1;
}
else
{
currentPage = limit.getPage();
}
all = logdao.findAll(rowStartEnd[1] - rowStartEnd[0], currentPage, sortValueMap, filterPropertyMap, queryCondition);
}
catch(Exception ex)
{
}
request.setAttribute("all", all);
path="Admin/systemLog.jsp";
}
}
// 根据path路径进行跳转
request.getRequestDispatcher(path).forward(request , response);
}
页面最终呈现效果如下