使用^ h通过POST打开新窗口:的commandButton(Open new window by

2019-06-26 11:11发布

我需要在一个新的窗口,通过上张贴的点击打开一个JSF页面<h:commandButton> 。 我知道我可以使用JavaScript达致这。 不过,我想实现这一目标使用JSF和JavaScript不。

我怎样才能做到这一点? 我使用JSF 2.0。

Answer 1:

唯一的非JS方式是设置target="_blank"在父<h:form>

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

然而,这会影响它们在同样的形式进行的所有非Ajax(!)的行动。 所以,如果你很聪明,让不应该在新窗口中打开一个Ajax动作的动作。 然而,AJAX也是JavaScript和你提到你不想使用JS(我希望,一旦你发现PrimeFaces实际上是完整的JavaScript的你没有得到震惊)。

如果你绝对需要将其限制在一个单一的动作,那么你真的不能去到处问一点帮助的JavaScript。

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


Answer 2:

当你限制目标只有一个动作,也许你想在它的初始状态的形式。 随着oncklick行动在表单的目标设定为_blan页面。 点击后,页面在一个新的标签/页面打开(触发操作事件)。 最后,触发的onblur行动,并重新设置形式到初始状态有了这个代码(该按钮将在_self页面打开的其余部分),你可以限制只啊:命令按钮在新页面中打开。 按钮的其余部分将在自页面打开:

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


文章来源: Open new window by POST using h:commandButton