displaytag导出所有数据及与POI3.7冲突有关问题的解决

displaytag导出所有数据及与POI3.7冲突问题的解决
半年不复活的主,终于有点激情写点东西了,其实也不是什么新鲜重要的东西。
就是最近在项目中有表格导出excel的需求,感觉displaytag很新颖简单,首先它可以和spring,struts完美结合,说的有些夸张,:-)。
废话不多说了,首先遇到了2个问题。
第一,excel导出竟然是按照可显示的数据导出,由于数据不是特别庞大所以想一次性导出所有数据。
第二,displaytag 1.2使用POI3.5以上版本会报找不到该方法的错误信息,由于项目应用最新的POI3.7,又不能将原有的代码进行降级处理。
综上所述的两条原因,我开始装起大牛起来,将maven上的displaytag源码下载好,导入myeclipse IDE,更新包等等,看源码不详述了。下面就将2种问题的解决办法附上。

A1:改动
#找到该class文件
org.displaytag.tags.TableTag.java
1088行左右,
 PaginationHelper paginationHelper = new PaginationHelper(
			 pageNumber, pagesize);
			 this.tableIterator = paginationHelper.getIterator(this.list);

改为
if (MediaTypeEnum.HTML.equals(this.currentMediaType)) {
				PaginationHelper paginationHelper = new PaginationHelper(
						pageNumber, pagesize);
				this.tableIterator = paginationHelper.getIterator(this.list);
			} else {
				this.tableIterator = IteratorUtils.getIterator(this.list);
			}


       改动
#找到该class文件
org.displaytag.render.TableWriterTemplate.java
   312行左右将
RowIterator rowIterator = model.getRowIterator(false);

改为
RowIterator rowIterator = null;
		if (MediaTypeEnum.HTML.equals(model.getMedia())) {
			rowIterator = model.getRowIterator(false);
		} else {
			rowIterator = model.getRowIterator(true);
		}

修改以上两处编译打包搞定
A2:这个问题很简单,从POI3.5之后 POI中的生成EXCEL的方法依赖性发生了很大的变化,所以只需将maven中的poi3.2更换3.7,然后编译即可。
下面将3.7的maven库列出

           
 <dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>3.7</version>
		</dependency>


问题解决。

至于改动这几处是否带来其他问题,由于暂时项目只是测试阶段,未发现问题。固不能回答,请见谅。
想来有些人不会使用maven去修改源码,先将修改后的两个jar附上。


如果有人使用PDF 请更新最新ITEXT5.0版本,不建议使用1.3。由于我不导出PDF,将不修改源码,如有人使用修改了,请附上jar,一同将displaytag升级一下,谢谢。
太纠结了为啥好东西都不升级库啊。