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>