【发布时间】:2016-04-05 10:14:53
【问题描述】:
我有以下要求:
- 如果由第三方服务正确生成,则需要下载文档。
- 如果字节流不是 pdf 则抛出错误。
- 为了达到同样的效果,我调用了触发文档生成的动作。如果文档生成成功,我想触发点击下面提到的链接。
- 我这样做是因为如果我直接使用 href 链接,它需要一个带有 pdf 的响应,如果出现错误,它会呈现一个新页面或新选项卡。要求是在同一屏幕上显示错误而不重新加载。
- 我在互联网上阅读了许多选项,它说如果没有两次独立调用服务器端,我无法在同一屏幕上呈现错误。
-
因此,我需要单击由自定义标记生成的 href 链接,该标记会在呈现页面时生成 href 链接。
<abs:resourceLink id="printQuoteResourceLink" action="downloadSaveQuote" label="#{msg.quotePrint}"/>
这将在页面加载时呈现一个 href:
<a id="pb42583:pageform:printQuoteResourceLink"
name="pb42583:pageform:printQuoteResourceLink"
href="/broker/broker/Home/Buy/ProductSimple?portal%3AwindowState=normal&navigationalstate=JBPNS_rO0ABXceAAlleGVjdXRpb24AAAABAARlMXM0AAdfX0VPRl9f&portal%3AcomponentId=8878e340-f05e-47d3-bdcb-42d29a6c62b3&portal%3AcacheLevel=PAGE&resourcestate=JBPNS_rO0ABXdyAA5zcHJpbmdSZXNvdXJjZQAAAAEAAAAMc3ByaW5nQWN0aW9uAAAAAQARZG93bmxvYWRTYXZlUXVvdGUABGRhdGUAAAABAA0xNDUxNTYzNTI2ODc0AAlleGVjdXRpb24AAAABAARlMXM0AAdfX0VPRl9f&portal%3Atype=resource&portal%3AportletMode=view">Print quote
</a><script type="text/javascript">
- 单击按钮时会调用触发文档生成的操作,我会将文档存储在 bean 中。当响应返回时,我将检查 bean 中的值是否为真。如果为真,我需要点击生成的链接。
- 我可以使用 ajax 和 jquery 来实现。
我当前的代码:
<h:panelGroup id="panelPrintQuote">
<div class="bordered button">
<h:commandButton class="bordered button" style="width: 154px;float:left;margin-left:640px !important; font-size:1em !important;
Padding: 0px 7px 0px 0px;" id="printQuoteCommandButton" value="#{msg.quotePrint}" action="generateSaveQuote" >
<a4j:ajax render="panelPrintQuoteResource"/>
</h:commandButton>
<!-- <abs:resourceLink id="printQuote" action="downloadSaveQuote"
label="#{msg.quotePrint}" image="/resources/images/transparent_image.png"/> -->
</div>
</h:panelGroup>
<h:panelGroup id="panelPrintQuoteResource" rendered="#{bnl_WebPageConfirmation.documentAvailable}">
<abs:resourceLink id="printQuoteResourceLink" action="downloadSaveQuote"
label="#{msg.quotePrint}" style="display:none;" image="/resources/images/transparent_image.png"/>
<h:outputScript>
//<![CDATA[
window.onload= $('a[href$="printQuoteResourceLink"]').click(function(){});
//]]>
</h:outputScript>
【问题讨论】:
-
$(a).trigger('click');应该足以点击锚点。
标签: javascript jquery ajax