Primefaces 3.5.14,Omnifaces 1.6
JSF / Prime中是否有一个看起来像按钮的组件,但允许用外部链接打开一个新的空白页面?因此,与普通链接不同,在点击时,必须首先从服务器保留新页面URL,然后必须打开新页面。就像带有action属性的commanButton一样,action方法的字符串结果确定新的url。
当然我可以像Styling one JSF external link to make it look like a button一样使用p:button
,但在这种情况下,我必须更新p:button
生成的链接,具体取决于每次在页面上执行的操作。这并不总是令人满意的。
答案 0 :(得分: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);
}