如何动态更改Struts2 jquery插件的目标

时间:2013-11-13 11:49:28

标签: struts2 pdf-generation struts2-jquery struts2-jquery-plugin

我有reportCriteria.jsp,如下所示:

<s:form action="showPdf" theme="css_xhtml" cssClass="form1small" name="reportgenerationform">
        <div id="searchHeaderReport">Generate Report</div>
        <div id="searchForm1">
            <s:select list="#application.proList" headerValue="Select" headerKey="select" label="Provider" id="providerId" name="providerName"></s:select>
            <div id="wwgrp_flightId" class="wwgrp">

                <div id="wwerr_showPdf_flightId" class="wwerr">
                    <div class="errorMessage">

                    </div>
                </div>
                <div id="wwlbl_flightId" class="wwlbl">
                    <label class="label" for="flightId"> Flight ID: </label>
                </div>
                <div id="wwctrl_flightId" class="wwctrl">
                    <select id="flightId" name="flightId">
                        <option selected="selected">select</option>
                    </select>   
                </div>
            </div>


            <div id="wwgrp_scheduleId" class="wwgrp">
                <div id="wwerr_showPdf_flightId" class="wwerr">
                    <div class="errorMessage">
                    </div>
                </div>
                <div id="wwlbl_flightId" class="wwlbl">
                    <label class="label" for="scheduleId"> Schedule ID: </label>
                </div>
                <div id="wwctrl_flightId" class="wwctrl">
                    <select id="scheduleId" name="scheduleId">
                        <option selected="selected">select</option>
                    </select>
                </div>
            </div>
            </div>
            <div id="submitdivid">
                    <sj:submit value="Generate Report" cssClass="orangebuttonsmall"/>
            </div>  
    </s:form>  

struts.xml映射如下:

    <action name="showPdf" class="com.view.ReportAction" method="showReport">
                        <result name="report" type="stream">
                            <param name="inputName">fileStream</param>
                            <param name="contentType">application/pdf</param>
                            <param name="contentDisposition">attachment;filename="PDF_Report.pdf"</param>
                        </result>
                        <result name="input">/reportCriteria.jsp</result>
                    </action>
<action name="flightMgmt" class="com.view.AdminAction" method="flightMgmt">
                <result name="flightMgmtClicked">/flightMgmt.jsp</result>
            </action>
<action name="reportGeneration" class="com.view.AdminAction" method="reportGeneration">
            <result name="reportGenerationClicked">/reportCriteria.jsp</result>
        </action>

现在,如果方法showReport返回“report”,那么pdf内容将以加密形式加载到div中,其id为“report_generation”。     当方法返回输入时,它会在div中加载带有错误的reportCriteria.jsp,其id为“report_generation”。

我想要做的是,当它返回错误时,必须将jsp加载到该div中,但如果该方法返回成功返回的“report”,则文件下载框必须如结果类型=所示出现struts.xml中的“report”。

以下是“loginSuccessAdmin.jsp”,其中包含“report_generation”div:*

<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

    <s:url var="remoteurl1" action="flightMgmt"/>
    <s:url var="remoteurl2" action="reportGeneration"/>
    <s:url var="remoteurl3" action="dealMgmt"/>
    <sj:tabbedpanel id="remotetabs" selectedTab="0" collapsible="true">
        <sj:tab id="tab1" href="%{remoteurl1}" label="Flight Management"/>
        <sj:tab id="tab2" href="%{remoteurl2}" label="Report Generation"/>
        <sj:tab id="tab3" href="%{remoteurl3}" label="Deal Management"/>
    </sj:tabbedpanel>

</div>

<sj:tab id="tab2">本身会创建一个id为report_generation的div。

有什么可能,可能达到我的目的.. 提前致谢

1 个答案:

答案 0 :(得分:1)

那是不可能的。

Javascript无法将文件下载到用户的计算机,除非您编写了一些解决方法。喜欢这个人here.

不要对fileDownload和错误使用相同的操作,而是分成两部分,第一部分告诉fileDownload是否有效,然后相应地你可以调用第二部分,确保接收文件,或者它可以告诉你您可以像现在这样在div中推送错误。