Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 使用jboss seam生成并下载文件_File_Jakarta Ee_Jboss_Download_Seam - Fatal编程技术网

File 使用jboss seam生成并下载文件

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上下文

我需要使用seam向现有web应用程序添加“导出”功能。其目的是将搜索结果导出到csv文件。我没有问题生成一个csv,但我不知道如何将csv发送回用户。
我不想在服务器上存储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";
}