File 使用jboss seam生成并下载文件
我需要使用seam向现有web应用程序添加“导出”功能。其目的是将搜索结果导出到csv文件。我没有问题生成一个csv,但我不知道如何将csv发送回用户。File 使用jboss seam生成并下载文件,file,jakarta-ee,jboss,download,seam,File,Jakarta Ee,Jboss,Download,Seam,我需要使用seam向现有web应用程序添加“导出”功能。其目的是将搜索结果导出到csv文件。我没有问题生成一个csv,但我不知道如何将csv发送回用户。 我不想在服务器上存储csv,因为这会占用存储空间。如何在jboss seam中实现这一点?有两种方法: 1) 检查Seam文档,了解如何使用Seam Excel以编程方式生成文件,然后使用CSV的mime类型集将其写出-这些都在文档中有详细说明 但是,我无法在最新版本的Seam中实现这一点,因为它需要一个响应对象,该对象过去可以从Seam上下文
我不想在服务器上存储csv,因为这会占用存储空间。如何在jboss seam中实现这一点?有两种方法: 1) 检查Seam文档,了解如何使用Seam Excel以编程方式生成文件,然后使用CSV的mime类型集将其写出-这些都在文档中有详细说明 但是,我无法在最新版本的Seam中实现这一点,因为它需要一个响应对象,该对象过去可以从Seam上下文中获得,但现在只返回null 2) 将您想要的CSV文件编码为Excel xhtml模板(请参见Seam文档和示例项目),并使用标记将其作为普通文件呈现 我经常这样做,效果很好,除了不能提供文件名的限制
嗯。有两种方法: 1) 检查Seam文档,了解如何使用Seam Excel以编程方式生成文件,然后使用CSV的mime类型集将其写出-这些都在文档中有详细说明 但是,我无法在最新版本的Seam中实现这一点,因为它需要一个响应对象,该对象过去可以从Seam上下文中获得,但现在只返回null 2) 将您想要的CSV文件编码为Excel xhtml模板(请参见Seam文档和示例项目),并使用标记将其作为普通文件呈现 我经常这样做,效果很好,除了不能提供文件名的限制
HTH.使用Seam提供的文档存储Servlet 几乎是从参考文档复制和粘贴,在
web.xml
中声明servlet如下:
<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>
使用
在页面中生成下载文件的链接:
请注意,
传播对话(除非您设置了传播=none
)。如果传播对话上下文,则可能不需要传递任何参数。对于大型数据集,最好不要传播对话并传递参数来选择请求范围组件中的数据 使用Seam提供的文档存储Servlet
几乎是从参考文档复制和粘贴,在web.xml
中声明servlet如下:
<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>
使用
在页面中生成下载文件的链接:
请注意,
传播对话(除非您设置了传播=none
)。如果传播对话上下文,则可能不需要传递任何参数。对于大型数据集,最好不要传播对话并传递参数来选择请求范围组件中的数据 我正在这样做(不传递任何参数),下载链接呈现,但单击它会使应用程序想要转到一个新页面(不仅仅是下载文件),然后在类的新实例(而不是支持现有页面的实例)中执行getCsvData方法,所以所有内容都为null。知道为什么吗?我正在这样做(不传递任何参数),下载链接呈现,但单击它会使应用程序想要转到新页面(不仅仅是下载文件),然后在类的新实例(不是支持现有页面的实例)中执行getCsvData方法,因此所有内容都为空。知道为什么吗?
<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>
// could be byte[], File or InputStream
public InputStream getCsvData() {
// generate data to be downloaded
}
public String getCsvFileName() {
return "myfile.csv";
}