h:在action方法之前执行的commandLink目标

时间:2013-11-13 10:59:15

标签: jsf richfaces target

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

1 个答案:

答案 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在之前呈现,用户甚至会点击该链接,因此您无法在合适的时间进行更改。