导航到 JSF 2 中子文件夹中的页面不起作用

Navigation to pages in subfolders in JSF 2 does not work

我遇到以下问题:我有一个文件夹层次结构,我在其中分隔我的项目网页:

Web
 |- Acoes
 |   |- usuariosAcoes.xhtml
 |   |- cadastrarAcao.xhtml
 |- usuarios
 |   |- listarUsuarios.xhtml
 |   |- cadastrarUsuario.xhtml

但是,当我尝试导航 ManagedBean 时,页面不会加载,如果我尝试访问当前页面文件夹之外的页面,则只会更新当前页面。

例如,如果我在 listarUsuarios.xhtml 页面中并且我尝试通过 ManagedBean cadastrarUsuario.xhtml 访问该页面,一切正常:

public String acessaCadastro(){ return "cadastrarUsuario"; }

但如果我在页面列表 Usuarios.xhtml 上并尝试访问另一个文件夹中的 usuariosAcoes.xhtml,则什么也不会发生,只会重新加载我已经在的页面:

public String acessarAcoesUsuario(){ return "usuariosAcoes"; }

我试过了,没解决:

public String acessarAcoesUsuario(){ return "Acoes/usuariosAcoes"; }

所以不是:

public String acessarAcoesUsuario(){ return "../Acoes/usuariosAcoes"; }

即便如此:

public String acessarAcoesUsuario(){ return "Acoes/usuariosAcoes.xhtml"; }

或:

public String acessarAcoesUsuario(){ return "../Acoes/usuariosAcoes.xhtml"; }

那么我该如何解决这个问题呢?记住不要使用 faces-config.xml 创建路由,因为 JSF 2.x 已经抽象了它。

如果我明白了,我4天前也遇到过同样的问题。

当您在按钮中使用操作导航到另一个页面时,该按钮只会在当前页面中呈现目标页面。

我使用这个解决方案:

public void navigateTo(String href) {
        try {
        FacesContext.getCurrentInstance().getExternalContext().redirect("MYSERVERADDRESS" + href);
    } catch (IOException ex) {
    }
}

在您的操作中,您可以使用 "navigateTo("page.xhtml")" 代替返回地址给按钮操作。

public String acessarAcoesUsuario(){
    navigateTo("/Acoes/usuariosAcoes.xhtml");
    return "";
}

或者干脆

public void acessarAcoesUsuario(){
    navigateTo("/Acoes/usuariosAcoes.xhtml");
}