导航到 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");
}
我遇到以下问题:我有一个文件夹层次结构,我在其中分隔我的项目网页:
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");
}