2

Primefaces 3.5.14,Omnifaces 1.6

JSF/Prime 中是否有一个看起来像按钮的组件,但它允许使用外部链接打开一个新的空白页面?因此,与普通链接不同的是,单击新页面 URL 时必须从服务器初始保留,然后必须打开新页面。就像一个带有 action 属性的 commanButton,其中一个 action 方法的字符串结果决定了新的 url。

当然,我可以p:button样式化一个 JSF 外部链接中使用,使其看起来像一个按钮,但在这种情况下,我必须更新由 生成的链接p:button,具体取决于每次在页面上所做的操作。这并不总是可取的。

4

1 回答 1

8

您需要target="_blank"在父表单上提交到新窗口,并且需要在操作方法中调用ExternalContext#redirect()(或 OmniFaces' Faces#redirect())以让目标窗口在给定的 URL 上发送新的 GET 请求。重要的是,当您使用<p:commandButton>而不是<h:commandButton>,您还需要设置ajax="false",因为它不尊重target="_blank".

因此,所以:

<h:form target="_blank">
    <p:commandButton value="Submit" action="#{bean.submit}" ajax="false" />
</h:form>

public void submit() throws IOException {
    String redirectURL = determineItSomehow();
    Faces.redirect(redirectURL);
}
于 2013-09-20T14:56:33.993 回答