Java 将动态数据从JSP页面导出到Struts2中的CSV

Java 将动态数据从JSP页面导出到Struts2中的CSV,java,jsp,csv,struts2,Java,Jsp,Csv,Struts2,我正在尝试实现一个功能,其中用户以CSV格式下载文件。我已经完成了下载部分,我能够将JSP转换为CSV格式,但我面临的问题是,我无法将动态数据从JSP传输到CSV文件。下载文件后,我看到了JSP标签和它的所有其他内容,而我只想看到数据,而不是JSP标签或表单等 行动类: public String viewReport() throws Exception { boolean returnReport; String filePath = "fileName.jsp";

我正在尝试实现一个功能,其中用户以
CSV
格式下载文件。我已经完成了下载部分,我能够将
JSP
转换为
CSV
格式,但我面临的问题是,我无法将动态数据从
JSP
传输到
CSV
文件。下载文件后,我看到了
JSP标签
和它的所有其他内容,而我只想看到数据,而不是
JSP标签
表单

行动类:

public String viewReport() throws Exception {
    boolean returnReport;

    String filePath = "fileName.jsp";

    File file = new File(filePath);
    inputStream = new FileInputStream(file);

    try {
        returnReport = validateRequest();
        if (returnReport) {
            setIntgList(generateViewIntegrationReportData(getESignUIConfig()));
        } else {
            failureResponse(msgs, 400);
            return null;
        }
    } catch (Exception e) {
        e.printStackTrace();
        msgs.add(new Message(ESignatureIntegrationMessageTypeEnum.MESSAGE_TYPE_ERROR, 
                    UiIntegrationKeyConstants.UI_INTEGRATION_ERROR_CODE_500, UiIntegrationKeyConstants.UI_INTEGRATION_ERROR_TEXT_SERVICE_ERROR));
        failureResponse(msgs, 500);
        return null;
    }

    return UiIntegrationKeyConstants.INTEGRATION_DETAILS_REPORT_REPSONSE;
}
JSP:


交易报告页


Struts.xml

<action name="*Integration" method="{1}" class="classPath">
        <result name="success" type="tiles">integrationView</result> 
        <result name="integrationDetailsReportResponse" type="stream">
            <param name="contentType">application/octet-stream</param>
            <param name="inputName">inputStream</param>
            <param name="contentDisposition">attachment;filename="integrationReportDetailsView.csv"</param>
            <param name="bufferSize">1024</param>
        </result>   
</action>

集成视图
应用程序/八位字节流
输入流
附件filename=“integrationReportDetailsView.csv”
1024

也有一些类似的问题,但它们令人困惑,我无法将它们与我的需要联系起来,所以请不要重复

也许我误解了,但你想做的是不可能的

您是否将fileName.jsp放入InputStream并将其作为integrationReportDetailsView.csv下载?当然,您无法获得jsp的dinamic内容,您所做的类似于使用FTP服务器下载文件


jsp的dinamic内容是在您发出请求时由服务器创建的,但您不是在调用jsp,而是在调用一个操作,该操作下载文件的二进制数据并将其作为附件发送。服务器从不处理它,因此jsp标记不会被评估,dinamic内容也不会被创建。

也许我误解了,但您试图做的是不可能的

您是否将fileName.jsp放入InputStream并将其作为integrationReportDetailsView.csv下载?当然,您无法获得jsp的dinamic内容,您所做的类似于使用FTP服务器下载文件


jsp的dinamic内容是在您发出请求时由服务器创建的,但您不是在调用jsp,而是在调用一个操作,该操作下载文件的二进制数据并将其作为附件发送。服务器从不处理它,因此jsp标记不会被评估,dinamic内容也不会被创建。

我不知道为什么没有人回答这个问题,我认为这个问题并不难。因此,为了将动态数据从
JSP
转换为
CSV
文件格式,我们需要将
我们的
Java对象
序列化为
CSV
格式。有一些
库可以用来实现这一目标。我使用了
OpenSCV
并将我的
POJO
传递给它。现在,当我点击按钮时,我不仅可以下载文件,还可以将数据从
JSP
下载到
CSV
。我缺少的是对象的
序列化部分


链接可能会帮助某人

我不知道为什么没有人回答这个问题,我想这个问题并不难。因此,为了将动态数据从
JSP
转换为
CSV
文件格式,我们需要将
我们的
Java对象
序列化为
CSV
格式。有一些
库可以用来实现这一目标。我使用了
OpenSCV
并将我的
POJO
传递给它。现在,当我点击按钮时,我不仅可以下载文件,还可以将数据从
JSP
下载到
CSV
。我缺少的是对象的
序列化部分


链接可能会帮助某人

jsp是我正在下载的同一个文件。我不想显示它的绝对路径。因此,为了显示动态数据,必须在服务器中处理该文件。fileName.jsp与我正在下载的文件相同。我不想显示它的绝对路径。因此,为了显示动态数据,必须在服务器上处理文件。我做了一项研究,Struts.xml中的配置应该可以处理所有事情,但它不显示数据。它只显示原始jsp内容。您对此有什么想法吗?显然,您无法将jsp导出到csv。(但您可以在S2插件的帮助下将视图导出为pdf。)如果您需要csv,请在服务器上创建它并流回到用户。请查看
OpenCSV
库。我做了一项研究,Struts.xml中的配置应该会处理所有问题,但它不会显示数据。它只显示原始jsp内容。您对此有什么想法吗?显然,您无法将jsp导出到csv。(但您可以在S2插件的帮助下将视图导出为pdf。)如果您需要csv,请在服务器上创建它并流回到用户。请查看
OpenCSV
库。这不是jsp到csv。jsp不是POJO。您能否分享一个示例,说明如何将处理后的JSP传递给OpenSCV序列化程序?听起来很有趣,但我无法想象有什么方法可以做到这一点。在JSP中,通过Spring表达式语言可以正确显示数据。因此,不要在那里显示它,而是使用Struts2 serialize POJO或java bean将文件下载为CSV,或者使用OpenCSV以非常简单的措辞下载一个简单的java类。这不是jsp到CSV。jsp不是POJO。您能否分享一个示例,说明如何将处理后的JSP传递给OpenSCV序列化程序?听起来很有趣,但我无法想象有什么方法可以做到这一点。在JSP中,通过Spring表达式语言可以正确显示数据。因此,不要在那里显示它,而是使用Struts2 serialize POJO或java bean将文件下载为CSV,或者使用OpenCSV以非常简单的措辞下载一个简单的java类。
<action name="*Integration" method="{1}" class="classPath">
        <result name="success" type="tiles">integrationView</result> 
        <result name="integrationDetailsReportResponse" type="stream">
            <param name="contentType">application/octet-stream</param>
            <param name="inputName">inputStream</param>
            <param name="contentDisposition">attachment;filename="integrationReportDetailsView.csv"</param>
            <param name="bufferSize">1024</param>
        </result>   
</action>