我遇到以下问题:我有一个文件夹层次结构,我将项目网页分开:
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已经将其抽象化了。
答案 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");
}