我需要使用seam将“导出”功能添加到现有的web应用程序。目的是将搜索结果导出到csv文件。生成一个csv我没有问题,但我不知道如何将csv发回给用户。 我不想将csv存储在服务器上,因为这会占用存储空间。我怎么能在jboss seam中实现这一点?使用jboss seam生成并下载文件
1
A
回答
5
使用Seam提供的Document Store Servlet。
几乎复制和参考文档粘贴,声明该servlet在web.xml
这样的:
<servlet>
<servlet-name>Document Store Servlet</servlet-name>
<servlet-class>org.jboss.seam.document.DocumentStoreServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Document Store Servlet</servlet-name>
<url-pattern>/seam/docstore/*</url-pattern>
</servlet-mapping>
然后创建一个export.xhtml
文件只<s:resource>
标签:
<s:resource xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
data="#{myComponent.csvData}"
contentType="application/vnd.ms-excel"
fileName="#{myComponent.csvFileName}"/>
生成链接下载文件在您的网页与<s:download>
:
<s:download src="/csv/export.xhtml">
<h:outputText value="Download CSV"/>
<f:param name="param1" value="somevalue"/>
<f:param name="param2" value="someOtherValue"/>
</s:download>
最后,实施getCsvData()
和getCsvFileName()
方法在组件:
// could be byte[], File or InputStream
public InputStream getCsvData() {
// generate data to be downloaded
}
public String getCsvFileName() {
return "myfile.csv";
}
注意<s:download>
传播(除非您设置propagation=none
)。如果您传播对话上下文,则可能不需要传递任何参数。对于大型数据集,最好不要传播对话并传递参数以在请求作用域组件中选择数据。
0
有几种方式:
1)检查信息Seam的文档上使用Seam,Excel以编程方式生成的文件,然后使用MIME类型为CSV设置写出来 - 这是所有详细在文档中。
但是,我无法在最新版本的Seam中使用它,因为它需要一个响应对象,该对象在Seam上下文中可用,但现在只返回null。
2)将您想要的CSV文件编码为Excel xhtml模板(请参阅Seam文档和示例项目),并使用标签将其正常显示。
我经常这样做,它运作良好,禁止限制,你不能提供一个文件名。
HTH。
相关问题
- 1. 生成html文件,并用PHP下载
- 2. 生成并下载excel文件
- 3. ASP.Net C#生成并下载PDF文件
- 4. 使用renderBinary()生成可下载文件
- 5. JBoss Seam中的应用上下文错误 - 弹簧集成
- 6. 使用ajax生成文件并允许用户下载它?
- 7. 在Seam项目中运行测试并非seam-gen生成
- 8. 在JBOSS中使用XHTML Seam
- 9. 使用EJBQL和EntityQuery jboss seam
- 10. 如何使用Javascript生成并下载大型文件clientside?
- 11. 在JBoss Seam中使用JBoss Web SingleSignOn
- 12. 下载生成后生成excel文件
- 13. 使用wkhtmltopdf生成PDF并下载pdf
- 14. 生成并下载XML
- 15. JBoss Seam培训
- 16. 生成并下载zip
- 17. 使用Flask生成和下载.docx文件的文件夹
- 18. Jboss seam自定义servlet“没有活动的事件上下文”
- 19. 在javascript中生成并下载文本文件
- 20. 可能在javascript中生成文件并提示用户下载?
- 21. 使用Seam上下文过滤器混合使用Seam和GWT
- 22. 在文件下载中生成警报
- 23. 提示下载生成的PDF文件
- 24. 下载docxtpl生成的文件与cherrypy
- 25. ASP.Net:生成要下载的文件
- 26. JSF/Seam:如何在没有用户干预的情况下下载和打印动态生成的PDF文件?
- 27. Seam 2与Jboss 7
- 28. EntityManager导致nullPointerException。使用Seam和JBOSS
- 29. 使用jsf1.2 + jboss seam更新数据
- 30. EntityManager为空。使用Seam和JBOSS
你摇滚斯特凡诺! – jakob 2011-09-09 11:09:18
我正在做这个(以及不传递任何参数)的下载链接呈现,但点击它使应用程序想要去一个新的页面(不只是下载文件),然后执行getCsvData方法在一个新的实例类(而不是支持现有页面的那个),所以一切都是空的。任何想法为什么? – tad604 2014-10-01 00:36:43