10

我正在尝试使用命令按钮在我的托管 bean 中转发一个页面:

<h:commandButton action="#{bean.action}" value="Go to another page" />

以下行:

public void action() throws IOException {
    FacesContext.getCurrentInstance().getExternalContext().redirect("another.xhtml");
}

重定向页面,而不是转发。我已经看到了与此类似的问题并尝试了给定的解决方案:

public void action() throws IOException {
    FacesContext.getCurrentInstance().getExternalContext().dispatch("another.xhtml");
}

但我收到以下错误:

Index: 0, Size: 0

那么如何从托管 bean 转发到页面呢?

4

1 回答 1

12

只需将其作为操作方法返回值返回即可。

public String action() {
    return "another.xhtml";
}

如果您反过来除了导航之外什么都不做,那么您也可以将字符串结果直接放在action属性中。

<h:commandButton action="another.xhtml" value="Go to another page" />

然而,这又是一个相当糟糕的做法。您不应该为普通的页面到页面导航执行 POST 请求。只需使用一个简单的按钮或链接:

<h:button outcome="another.xhtml" value="Go to another page" />

也可以看看:

于 2013-07-13T21:00:15.687 回答