我需要通过单击 POST 在新窗口中打开 JSF 页面<h:commandButton>
。我知道我可以使用 JavaScript 来实现这一点。但我想使用 JSF 而不是 JavaScript 来实现这一点。
我怎样才能做到这一点?我正在使用 JSF 2.0。
我需要通过单击 POST 在新窗口中打开 JSF 页面<h:commandButton>
。我知道我可以使用 JavaScript 来实现这一点。但我想使用 JSF 而不是 JavaScript 来实现这一点。
我怎样才能做到这一点?我正在使用 JSF 2.0。
唯一的非 JS 方式是target="_blank"
在 parent中设置<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>
当您将目标限制为单个操作时,您可能希望表单处于初始状态。通过 oncklick 操作,您可以将表单的目标设置为 _blan 页面。点击后,页面在新标签页/页面中打开(触发动作事件)。最后,触发 onblur 动作并将表单再次设置为初始状态(其余按钮将在 _self 页面中打开) 使用此代码,您可以限制为仅 ah:commandbutton 在新页面中打开。其余按钮将在 self 页面中打开:
<h:commandButton
onclick="this.form.target='_blank'"
onblur="this.form.target='_self'"
id="listadoRebuts"
action="#{giaquaBusquedaCorte.abrirListadoRebuts}"
value="#{msg.seqVisorbtnRecibos}">
</h:commandButton>