ajax - 单击具有此属性的 commandButton 后,所有操作都使用 target="_blank"
问题描述
我有 ah:commandButton 属性 onclick="this.form.target='_blank'" 用于在新选项卡中打开 PDF,它运行良好,但在此操作之后,所有其他操作(h:commandLink 或 h:commnadButton)也没有在新选项卡中打开目标属性。
来自 xhtml 文件的片段
<h:form>
<rich:panel header="User Logs Data">
<h:panelGrid id="ad" columns="2" columnClasses="fieldlabel,fieldvalue">
<h:outputText value=" Branch:" />
<h:selectOneMenu value="#{userLogsInformationController.branch}"
converter="#{bankBranchConverter}"
disabled="#{not sec:areAllGranted('SHOW_ALL_OUTWARD')}"
onchange="submit()"
valueChangeListener="#{userLogsInformationController.handleBranchChange}"
style="width : 250px;">
<f:selectItem itemLabel="[Select Branch]"/>
<f:selectItems value="#{userLogsInformationController.branches}"
var="br" itemLabel="#{br.name}"/>
</h:selectOneMenu>
</h:panelGrid>
<h:panelGrid columns="2">
<h:commandButton value="Report">
<f:ajax event="click" execute="@form" listener="#{userLogsInformationController.showReport}" render="@form" />
</h:commandButton>
<h:commandButton value="Download"
actionListener="#{userLogsInformationController.downloadReport}"
onclick="this.form.target='_blank'" ajax = "false"
disabled="#{userLogsInformationController.notAbleToPrint}"/>
<rich:messages id="messages" style="padding-left:40px; margin-top: 5px"/>
</h:panelGrid>
</rich:panel>
</h:form>
我研究了一些问题,发现第一次,目标等于 _blank 它作为属性添加到表单中。第二次, target="_blank" 仍然存在于表单中,而它不应该存在(此时目标参数未定义)。
我没有得到解决方案,也无法在页面中添加方法。需要一些有关如何解决此问题的指南。
解决方案
这个答案是从另一个来源收集的。当我们将目标限制为单个操作时,我们需要让表单处于初始状态。通过 oncklick 操作,我们将表单的目标设置为 _blank 页面。点击后,页面在新标签页/页面中打开(触发动作事件)。最后,触发 onblur 动作并将表单再次设置为初始状态(其余按钮将在 _self 页面中打开) 使用此代码,我们可以限制只有 ah:commandbutton 在新页面中打开
<h:commandButton value="Download"
actionListener="#{userLogsInformationController.downloadReport}"
onclick="this.form.target='_blank'"
onblur="this.form.target='_self'"
ajax = "false" disabled="#{userLogsInformationController.notAbleToPrint}"/>
推荐阅读
- ios - 尝试为 iOS Mac M1 芯片运行或构建 Flutter 项目时出错
- sas - PROC MEANS 与上一份报告的结果进行比较
- r - R中的正则表达式:找到第n个出现并根据某些条件添加一些字母
- windows - 盖茨比上的 EBUSY
- c++ - 如何在 Visual Studio 中处理大量文件夹,每个文件夹都有自己的 Makefile
- javascript - 点击按钮/网址上的 Javascript 警报 DIV 内容
- python - 来自 Gan 的负载生成器模型
- c++ - 如何在计算特征值/特征向量时减少重复代码?
- python - 提供分类类型时,DMatrix 参数“enable_categorical”必须设置为“True” - XGB 具有 Shap 值特征重要性
- java - 插件 org.jooq.pro:jooq-codegen-maven 或其依赖项之一无法解析