我有一个页面,您可以选择值并生成PDF,在SelectOneMenu上我有值,您可以选择通过电子邮件发送PDF或在新标签中打开它。
这是我的问题:
<h:commandLink action="#{Reports.filter}" value="Create" styleClass="linkbutton" target="#{Reports.action eq 0? '_blank':'' }"/>
在新标签中打开= 0,电子邮件= 1,同一页面= 2.在我的方法中,我检查我的列表是否为空,如果他是空的,则操作设置为2,如果他不是空的该操作仍然是所选的原始值。因此,如果我的列表为空,页面仍然会打开一个新选项卡,尝试发送邮件,使其显示“同一页面”以显示我的通知。
如何设置它以等待Reports.filter方法完成然后获取目标值?
我也使用richfaces。
答案 0 :(得分:0)
如果我理解正确,您的代码段应如下所示:
<h:selectOneMenu id="actionSelector" value="#{Reports.action}">
<f:selectItem itemValue="0" itemLabel="Open in new tab" />
<f:selectItem itemValue="1" itemLabel="Email PDF" />
</h:selectOneMenu>
<a4j:commandLink action="#{Reports.filter}" oncomplete="reportAction();" />
<h:outputScript>
function reportAction() {
if (jQuery("select[id$='actionSelector']").val() === 0) {
window.open(...);
}
}
</h:outputScript>
即,由于target
在之前呈现,用户甚至会点击该链接,因此您无法在合适的时间进行更改。