gpt4 book ai didi

java - 在 Struts2 中将动态数据从 JSP 页面导出到 CSV

转载 作者:行者123 更新时间:2023-12-02 03:29:52 27 4
gpt4 key购买 nike

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

Action 类:

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:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib uri="/WEB-INF/integration.tld" prefix="integration" %>

<link rel="stylesheet" type="text/css" href='<integration:file name="integration.css" type="CSS" prefix="/esign/styles/"/>'/>
<script language="javascript" type="text/javascript" src="<integration:file name="integration.js" type="JS" prefix="/esign/scripts/integration/"/>">
</script>
<h1><center>Transaction Report Page</center></h1>
<br></br>
<c:forEach items="${intgList}" var="list">
<tr class="<%=count % 2 != 0 ? "odd" : "even" %>">
<td class="dataFieldCell1" align="center"><c:out value="${list.lob}" /></td>
<td class="dataFieldCell1" align="center"><c:out value="${list.insuredName}" /></td>
<td class="dataFieldCell1" align="center"><c:out value="${list.custPhone}" /></td>
<c:if test="${list.policyNbrLink eq true}">
<td class="dataFieldCell1" align="center"><a href='#x' style="text-decoration:none" onclick="locateFunc('viewESignPolicyDetails',
{'agencyCode':'${list.agencyCode}',
'policyNumber':'${list.policyNumber}',
'policyState':'${list.policyState}',
'esignIdentifier':'${list.esignId}',
'esignVendorIdentifier':'${list.esignVendorIdentifier}',
'transId':'${list.transId}',
'lob':'${list.lob}',
'customerName':'${list.insuredName}',
'customerPhone':'${list.custPhone}',
'customerEmail':'${list.custEmail}',
'cretedDate':'${list.createdDate}'}
)"><c:out value="${list.policyNumber}"/></a></td>
</c:if>
<c:if test="${list.policyNbrLink eq false}">
<td class="dataFieldCell1" align="center"><c:out value="${list.policyNumber}"/></td>
</c:if>
<td class="dataFieldCell1" align="center"><c:out value="${list.createdDate}" /></td>
<td class="dataFieldCellWrap" align="center"><c:out value="${list.custEmail}" /></td>
<td class="dataFieldCell1" align="center"><a href='#x' onclick="locateFunc('viewESignDetails',
{'url':'<integration:urlAction actionName="/integration/viewDetailsIntegration"><integration:urlParam key="esignIdentifier" value="${list.esignId}"/></integration:urlAction>',
'agencyCode':'${list.agencyCode}',
'policyNumber':'${list.policyNumber}',
'policyState':'${list.policyState}',
'esignIdentifier':'${list.esignId}',
'esignVendorIdentifier':'${list.esignVendorIdentifier}',
'lob':'${list.lob}',
'transId':'${list.transId}',
'customerName':'${list.insuredName}',
'customerPhone':'${list.custPhone}',
'customerEmail':'${list.custEmail}',
'cretedDate':'${list.createdDate}'}
)"><c:out value="${list.esignNumDocs}"/></a></td>
</tr>
<%count++;%>
</c:forEach>

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.jsp 放入InputStream 并将其下载为integrationReportDetailsView.csv?当然你无法获取jsp的动态内容,你所做的类似于使用FTP服务器下载文件。

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

关于java - 在 Struts2 中将动态数据从 JSP 页面导出到 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38250375/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com