大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
eXtremeComponents的eXtremeTable是一套很好的分页标签,比displayTag好多了。它使用jstl,所以与webwork,Struts,JSF 集成也很方便,推荐大家用
下面是我使用的例子:
<
ec:table
items
=”users”
var
=”user”
action
=””
imagePath
=”${ctx}/widgets/extremecomponents/images/table/zh_CN/*.gif”
cellpadding
=”1″
title
=”用户名”
locale
=”zh_CN”
rowsDisplayed
=”10″
>
<
ec:exportXls
fileName
=”UserList.xls”
tooltip
=”Export Excel”
/>
<
ec:exportPdf
fileName
=”UserList.pdf”
tooltip
=”输出PDF文件”
headerColor
=”blue”
headerBackgroundColor
=”blue”
headerTitle
=”人员表”
/>
<
ec:exportCsv
fileName
=”UserList.txt”
tooltip
=”输出CSV文件”
delimiter
=”|”
/>
<
ec:row
>
<
ec:column
property
=”rowcount”
cell
=”rowCount”
sortable
=”false”
title
=” No.”
width
=”50″
/>
<
ec:column
property
=”username”
title
=”姓 名”
width
=”200″
/>
<
ec:column
property
=”firstName”
title
=”firstName”
width
=”200″
/>
<
ec:column
property
=”lastName”
title
=”lastName”
width
=”200″
/>
</
ec:row
>
</
ec:table
>
Action
import
java.util.List;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
org.apache.struts.action.ActionForm;
import
org.apache.struts.action.ActionForward;
import
org.apache.struts.action.ActionMapping;
import
com.ygsoft.propertyright.service.UserManager;
import
com.ygsoft.propertyright.webapp.util.BeanUtil;
public
class
TestAction
extends
BaseAction
…
{
UserManager userManager = (UserManager)BeanUtil.getBean(“userManager“);
public ActionForward testPage(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception …{
List users = getUsers();
request.setAttribute(“users“, users);
return mapping.findForward(“test“);
}
public List getUsers() throws Exception …{
return userManager.getUsers(null);
}
}
其中ecoAttrs是一个collection(List),放入pojo。action里面写你这个页面的访问方法(如我的页面是一个action,其他的如.do或者.jsp什么的都可以)。rowsDisplayed是默认显示条数,它可以自动实现分页。
下面的三个<ec:export>是导出三种格式用的,不用的话可以不写(写了需要在web.xml配置相应的filter)。
<ec:column>里面放属性,property指向pojo的相应属性,而title是表头显示的信息,这个标签需要用<ec:row>包起来(1.0.1 m4以后)
这里有一套中文图标:
http://tiny.51.net/extremecomponent/zh_CN.rar
web.xml配置
<
filter
>
<
filter-name
>
eXtremeExport
</
filter-name
>
<
filter-class
>
org.extremecomponents.table.filter.ExportFilter
</
filter-class
>
</
filter
>
<!–
输出excel,pdf,csv的时候用
–>
<
filter-mapping
>
<
filter-name
>
eXtremeExport
</
filter-name
>
<
url-pattern
>
/*
</
url-pattern
>
</
filter-mapping
>
<!–
其实这个配置可不要,已经在放在jar里面了loading的时候自动会加进来-
–>
<
taglib
>
<
taglib-uri
>
/extremecomponents
</
taglib-uri
>
<
taglib-location
>
/WEB-INF/tld/extremecomponents.tld
</
taglib-location
>
<!–
tld拷贝到相应目录去->
</taglib>
中文问题
export里面的excel和pdf默认不支持中文,需要手工修改源码,excel的比较简单:
修改org.extremecomponents.table.view.XlsView.java(我指的是1.0.1-M4-A14的相应代码)
102行:
HSSFCell hssfCell = hssfRow.createCell(cellnum);
hssfCell.setEncoding(HSSFCell.ENCODING_UTF_16);(就是添加这一行)
122行:
HSSFCell cell = row.createCell(cellnum);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);(就是添加这一行)
这个在使用UTF-8时工作正常。如果其他Unicode环境可以尝试HSSFCell.ENCODING_COMPRESSED_UNICODE。
编译后将对应.class放到WEB-INF/classes相应目录就可以了。
pdf view的比较麻烦,还没尝试,解决方法参照这个帖子:
http://extremecomponents.org/forum/viewtopic.php?t=139&highlight=chinese+filter
http://www-128.ibm.com/developerworks/cn/xml/x-ospdf/index.html
以使用Struts为例,说明一下如何使用eXtremeTable的分页特性
这一切都可以在Action中完成,在Action会用到JSP中eXtremeTable的table标签的属性’tableId’ 和’item’,’tableId’用于完成eXtremeTable的分页,’item’用于返回你分页的结果集,不多不少,刚好是你需要查看的那一页的结果集,比如说,你一页是10条记录,那你访问第20页的时候,’item’的结果集就只有第201条到第210条记录.还有就是在request中加入totalRows的属性,表示本次查询结果的数量 另外,JSP的中,eXtremeTable的table标签要retrieveRowsCallback属性,将该属性设为 org.extremecomponents.table.callback.LimitCallback,这是它默认的分页回调类,你也可以写自已的回调类.设置了该默认的回调类以后,你在Action里就需要向request加入totalRows属性,值为你的查询结果总记录数,这样才会产生翻页的效果. 现在就你的DisplayAction中加分页的特性了,如下: Limit limit = LimitFactory.createInstanceOfLimit(request, TABLEID); 这里的TABLEID就是JSP页上标签的属性tableId, PAGE_SIZE是你一页的记录数,TOTAL_SIZE是你查询数据的总数 然后设置totalRow属性,它的值被要求为Integer类型的,转换一下: request.setAttribute(“totalRows”,new Integer(TOTAL_SIZE)); 将分页后的结果集(一页的内容)放到request的resultList(此为JSP中item属性设置的值)属性中去: request.setAttribute(“resultList”, getTestData(limit.getCurrentRowsDisplayed(),limit.getPage())); 上面得到分页数据的函数原形为getTestData(int pageSize,int paget),通过指定一页的记录数和第几页来获得所需的数据,这可以根据数据库的分页特性,或者通过滑动游标的方式来得到,这里不再傲述. 以下为部分代码: JSP部分: < ec:table items =”resultList” var =”item” tableId =”youTableId” retrieveRowsCallback =”org.extremecomponents.table.callback.LimitCallback” filterRowsCallback =”org.extremecomponents.table.callback.LimitCallback” sortRowsCallback =”org.extremecomponents.table.callback.LimitCallback” action =”${pageContext.request.contextPath}/DisplayAction.do” imagePath =”${pageContext.request.contextPath}/images/table/*.gif” title =”TEST” width =”100%” rowsDisplayed =”10″ sortable =”false” filterable =”false” > < ec:column property =”name” title =”姓名” /> < ec:column property =”nickName” title =”别名” /> </ ec:table >
Action部分代码: Limit limit = LimitFactory.createInstanceOfLimit(request, TABLEID); LimitFactory.setLimitFilterAndSortAttr(limit); LimitFactory.setLimitPageAndRowAttr(limit,PAGE_SIZE,TOTAL_SIZE); request.setAttribute( “ resultList “ ,getTestData(limit.getCurrentRowsDisplayed(),limit.getPage())); request.setAttribute( “ totalRows “ , new Integer(TOTAL_SIZE)); ,标签里的rowDisplayed属性要和Action中的PAGE_SIZE一致,不然会有问题… 其他资源 ECSide发布地址: |
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/171295.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...