0

我有一个页面,您可以在其中选择值并生成 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。

4

1 回答 1

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就已呈现,因此您没有机会在正确的时间更改它。

于 2013-11-13T11:14:40.830 回答