2016-07-07 19 views
0

ユーザがファイルをCSV形式でダウンロードする機能を実装しようとしています。私はダウンロード部分を完了しましたが、JSPCSV形式に変換できますが、私が直面している問題は、JSPからCSVに動的データを転送できないことです。Struts2のJSPページからCSVへの動的データのエクスポート

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:ファイルをダウンロードした後、私はそれのJSP tagsおよび他のすべての内容ではなく、私はデータだけでなく、JSP tagsまたはformsなど

アクションクラスを見たいと思って見

<%@ 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> 

似たような質問がいくつかありますが、混乱しており、私の必要性に関連付けることができませんでしたので、重複しないようにしてください。

+0

私は研究を行い、Struts.xmlの設定はすべてを処理する必要がありますが、データを表示していません。生のjspコンテンツのみを表示します。あなたはその周りにアイデアはありますか? –

+0

明らかに、jspをcsvにエクスポートすることはできません。 (しかし、S2のプラグインの助けを借りて、ビューをpdfにエクスポートすることができます。)csvが必要な場合は、それをサーバー上に作成し、ユーザーにストリームバックします。 –

+0

'OpenCSV'ライブラリを見てください。 –

答えて

1

私はこの質問に誰も答えなかった理由は分かりません。その質問はそれほど難しくありませんでした。したがって、JSPの動的データをCSVファイル形式にするには、SerializeJava ObjectからCSVの形式にする必要があります。この目標を達成するために使用できるものは、librariesです。 OpenSCVを使用し、POJOを渡しました。今すぐボタンをクリックするとファイルをダウンロードできるだけでなく、JSPからCSVにデータを取得しています。私が欠けていたものは、オブジェクトの一部であるSerializingでした。

Thisリンクは誰かを助けるかもしれません。

+0

これはcspにjspではありません。 –

+1

JSPはPOJOではありません。処理されたJSPをOpenSCVシリアライザにどのように渡したかの例を共有できますか?面白いと思うけど、私はそれをする方法を想像することはできません。 –

+0

JSPでSpring Expression Languageを使用すると、データを正しく表示できます。そこで、そこに表示する代わりに、Struts2を使ってCSV形式でPOJOやJava Beanをシリアライズするか、OpenCSVを使った単純なJavaクラスをシンプルに表現してファイルをダウンロードしてください。 –

1

多分私は誤解されましたが、あなたがしようとしていることは不可能です。

fileName.jspをInputStreamに入れ、integrationReportDetailsView.csvとしてダウンロードしますか?もちろん、JSPのdinamicコンテンツを取得することはできません。たとえば、FTPサーバーを使用してファイルをダウンロードする場合と同様です。

jspのダイナミックコンテンツは、リクエストするとサーバーによって作成されますが、jspを呼び出すのではなく、ファイルのバイナリデータをダウンロードして添付ファイルとして送信するアクションを呼び出しています。サーバーはそれを処理しないので、jspタグは評価されず、ダイナミックコンテンツは作成されません。

+0

fileName.jspは、ダウンロードしているのと同じファイルです。私はそれの絶対的な道を示したくはありませんでした。したがって、動的データを表示するには、ファイルをサーバーで処理する必要があります。 –

関連する問題