希望我理解你的正确。这对我有用:
- 在 commandButton 的 actionListener-attribute 中提供生成报告的方法和 URL(根据您的示例代码,您已经做了什么)。
- 在 commandButton 的 action-attribute 中提供返回 URL 的方法(它将在 actionListener-method 之后调用)。
- 要打开新选项卡,请添加
target="_blank
父级<h:form>
(取自此问题答案)
XHTML 代码:
<h:form target="_blank">
<h:commandButton value="Show Report"
actionListener="#{reportBean.generateReport}"
action="#{reportBean.getUrl}" />
</h:form>
由于这种方法适用target="_blank"
于所有非 ajax 调用,因此这是使用 Javascript 的另一种方法:
<h:form>
<h:commandButton value="Show Report"
actionListener="#{reportBean.generateReport}"
action="#{reportBean.getUrl}"
onclick="this.form.target='_blank'"/>
</h:form>
Java代码:
public void generateReport(final ActionEvent evt) {
// ... generating report and setting url-variable
}
public String getUrl() {
return url;
}
如果您必须转发到外部链接,请参阅此问题