Jsf 使用h:commandButton通过POST打开新窗口

Jsf 使用h:commandButton通过POST打开新窗口,jsf,http-post,commandbutton,new-window,Jsf,Http Post,Commandbutton,New Window,我需要通过点击在一个新窗口中打开一个JSF页面。我知道我可以用JavaScript实现这一点。但我希望使用JSF而不是JavaScript来实现这一点 <h:form> ... <h:commandButton value="Open in new Window" onclick="this.form.target='_blank'" /> </h:form> 我怎样才能做到这一点?我正在使用JSF2.0。唯一的非JS方式是在父级中设置tar

我需要通过点击
在一个新窗口中打开一个JSF页面。我知道我可以用JavaScript实现这一点。但我希望使用JSF而不是JavaScript来实现这一点

<h:form>
    ...
    <h:commandButton value="Open in new Window" onclick="this.form.target='_blank'" />
</h:form>

我怎样才能做到这一点?我正在使用JSF2.0。

唯一的非JS方式是在父级
中设置
target=“\u blank”


...
但是,这会影响以相同形式执行的所有非ajax(!)操作。因此,如果您很聪明,那么将不应该在新窗口中打开的操作设置为ajax操作。然而,ajax也是JavaScript,您提到您不想使用JS(我希望您在发现PrimeFaces实际上充满JavaScript时不要感到震惊)

如果您确实需要将其限制为单个操作,那么您真的不能到处寻求JavaScript的帮助

<h:form>
    ...
    <h:commandButton value="Open in new Window" onclick="this.form.target='_blank'" />
</h:form>

...

当您仅将目标限制为单个操作时,可能希望表单处于初始状态。 使用oncklick操作可以将表单的目标设置为一个_blan页面。 单击后,页面在新选项卡/页面中打开(触发操作事件)。 最后,onblur操作被触发,并将表单再次设置为初始状态(其余按钮将在_self页面中打开) 使用此代码,您可以限制在新页面中仅打开一个h:commandbutton。 其余按钮将在自助页面中打开:

    <h:commandButton
       onclick="this.form.target='_blank'"
       onblur="this.form.target='_self'"
       id="listadoRebuts"
       action="#{giaquaBusquedaCorte.abrirListadoRebuts}"
       value="#{msg.seqVisorbtnRecibos}">
    </h:commandButton>


必须是一个窗口吗?或者是新标签?新标签也可以。当您单击命令按钮时,我希望在新选项卡中打开一个页面。在commandLink中,您可以实现添加目标=“_blank”,但我认为在commandButton中,如果没有JavaScriptThank Damian的输入,就无法做到这一点。我已经能够使用commandLink建立这个。但我想用commandButton实现同样的效果。另外,如果我们可以在后端指定javascript代码,以在新选项卡中打开页面,是否也存在问题??请帮忙。提前谢谢。从问题中可以看出:“我知道我可以用javascript实现这一点。但是我想用JSF代码而不是javascript实现这一点。”