最近要做一个新的项目,基本框架是struts2 + hibernate3.2 + spring2.5 。这几天就架构系统,全部都重新整理一下。后台列表的显示用开源的displaytag. 今天在做整合时发现,当页面使用了<s:select ...> 时,displaytag的导出功能就不能使用了,异常堆栈信息:
Exception: [.TableTag] Unable to reset response before returning exported data. You are not using an export filter. Be sure that no other jsp tags are used before display:table or refer to the displaytag documentation on how to configure the export filter (requires j2ee 1.3).
原因:未使用displaytag的导出过滤器(org.displaytag.filter.ResponseOverrideFilter),不过这在通常情况下并不会导致问题,但是如果在JSP的页面中使用了其它框架的标签(诸如Struts),而非常巧合的是在这些标签的处理过程中又恰好调用了ServletResponse.flushBuffer()等可以导致提交响应(即导致ServletResponse.isCommit()返回true)的方法,这个问题就会出现。
解决方案:配置Displaytag的导出过滤器(web.xml)。
<filter>
<filter-name>ResponseOverrideFilter</filter-name>
<filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ResponseOverrideFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ResponseOverrideFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
默认情况下此过滤器在把导出内容写回响应之前会将这些内容进行缓存。我们也可以设置一个可选的参数(buffer)的值为false以便使过滤器直接把内容写到输出流中,这可以使响应速度更快并且使用更少的内存,但是内容的长度不会被设置。在这里我们不设置这个参数。
测试过了,可以导出了.
分享到:
相关推荐
这篇博客文章《Struts2中使用displaytag标签总结》很可能是讨论如何在Struts2框架下集成并利用DisplayTag库来高效地处理表格显示。 DisplayTag标签库包括一系列自定义JSP标签,这些标签能够帮助开发者快速创建美观...
**JSP Struts2 分页 导出Excel** 在Web开发中,经常需要处理大量数据,这时分页显示和导出功能就显得尤为重要。JSP(JavaServer Pages)和Struts2作为Java Web开发中的常见技术,可以帮助我们构建动态、交互的网页...
2. **Struts与DisplayTag的集成** 在Struts项目中使用DisplayTag,首先需要将其依赖添加到项目的类路径中。这通常通过在`pom.xml`(如果是Maven项目)或`build.gradle`(Gradle项目)中添加DisplayTag的依赖实现。 ...
综上所述,DisplayTag是一个强大的表格和分页标签库,它简化了Web应用中的数据呈现,特别是在与Struts框架结合时,能极大地提高开发效率和用户体验。不过,为了保持系统安全和最佳性能,开发者应考虑适时升级到更...
2. **DisplayTag标签使用**:在JSP页面上,使用DisplayTag的标签(如)来定义表格,指定数据源(通常是模型驱动的ActionForm或者Spring的ModelAndView)和各种属性,如page、sort、export等。 3. **数据处理**:在...
这个库极大地简化了网页上数据展示的过程,特别是在基于Java的Web应用中,如使用Spring MVC或Struts等框架时。DisplayTag提供了一系列的标签,这些标签能够帮助开发者轻松地实现排序、分页、导出数据等功能,极大地...
4. **下载功能**:DisplayTag支持导出表格数据到各种格式,如CSV、Excel或PDF,使得用户可以方便地保存和共享数据。 5. **国际化与本地化**:DisplayTag支持多种语言,可以根据用户浏览器的设置自动调整标签的文本...
这两个库都是基于JSP标签库(Tag Library)实现的,可以方便地集成到Spring、Struts等MVC框架中。 **Displaytag** Displaytag是一个开源的表格和分页显示标签库,它提供了许多高级特性,如排序、分页、导出、样式...
- **导出**:DisplayTag还支持将表格数据导出为CSV、Excel、PDF等多种格式。 4. **自定义和扩展**:DisplayTag提供了丰富的API和接口,允许开发者自定义显示行为,如创建新的标签、过滤器、格式化器等。通过扩展...
4. **导出功能**:通过与Apache POI库的集成(如displaytag-export-poi-1.1.jar所示),Displaytag 能够将表格数据导出为Excel、PDF、CSV等多种格式,方便用户进一步处理或打印。 5. **模板化**:Displaytag 允许...
这个“strutsDisplay”压缩包可能包含了一个或者多个JSP文件,展示了如何在Struts的Action类中处理请求并返回数据,以及如何在JSP页面上使用DisplayTag标签来展示这些数据。通过学习和理解这些示例代码,你可以更好...
6. **导出功能**:DisplayTag还提供了导出表格到多种格式的能力,如CSV、Excel、PDF等,方便数据的进一步处理和分析。 在`displaytag-1.1-src.zip`中,开发者可以找到DisplayTag 1.1的源代码,这有助于理解其内部...
5. **集成与配置**:将DisplayTag集成到Struts项目中,通常需要在web.xml中配置DisplayTag的过滤器,并在页面中引入DisplayTag的标签库。此外,还可以通过自定义标签和属性来扩展DisplayTag的功能,满足特定需求。 ...
在研究DisplayTag时,开发者可能会关注如何在项目中集成DisplayTag库,配置web.xml和struts-config.xml(如果是基于Struts的项目),以及如何在JSP页面中使用DisplayTag的标签。此外,理解DisplayTag的生命周期和...
需要注意的是,如果使用Struts框架,DisplayTag的依赖库实际上都包括在Struts1.1的发布包中,只需要将displaytag-1.0-b3.jar文件拷贝到WEBAPP_HOME/WEB-INF/lib目录下面就可以了。另外,如果Struts1.1发布包中的...
2. **DisplayTag安装与配置** 在项目中添加DisplayTag的依赖,通常通过Maven或Gradle的依赖管理来实现。接着在Web应用的`web.xml`中配置DisplayTag的初始化参数,如分页大小和默认样式。 3. **使用DisplayTag** ...
5. **兼容性**:DisplayTag与主流的Java Web框架如Struts、Spring MVC等良好集成,可以无缝地融入到现有项目中。 `displaytag.properties`是DisplayTag的配置文件,用于设置标签库的全局属性,如默认的导出格式、...
在使用DisplayTag时,首先需要将其添加到项目的类路径中,通常通过Maven或Gradle的依赖管理来实现。然后,你可以通过在JSP页面上使用DisplayTag的标签库来创建和配置表格。例如,`<display:table>`标签是核心元素,...