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

时间:2015-11-09 14:31:38

标签: java jsf jsf-2.2

我遇到以下问题:我有一个文件夹层次结构,我将项目网页分开:

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已经将其抽象化了。

1 个答案:

答案 0 :(得分:0)

如果我理解,我在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");
}