这是我的JSF应用程序的文件结构。
User
目录是安全的&一个人需要进行身份验证才能看到user/success.xhtml
。 user/success.xhtml
有一个用于注销的按钮。该按钮将表单提交给以下方法。
public String logout(){
HttpSession session = (HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false);
session.invalidate();
return "index";
}
上述方法的最后一行是将用户重定向到index.xhtml
,因为index.xhtml
与user/success.xhtml
不在同一目录中,因此我收到了以下错误消息。
无法找到与from-view-id匹配的导航案例 '/user/success.xhtml'用于行动'#{AccContrl.logout()}'与结果 '索引'
如何重定向到层次结构中出现的文件?
我试过了return "/../index";
,但它没有用。
答案 0 :(得分:0)
导航结果表示视图ID。如果它不以/
开头,则相对于当前路径进行解释。如果它以/
开头,那么它将相对于Web根进行解释。
所以,只需使用/index
。
return "/index";
对于具体问题无关,您应该在此重定向,而不是导航。这不仅是因为你打算在POST之后导航离开时总是要执行重定向,还因为当前请求/响应中仍然存在无效会话,但在下一个请求/响应中不再存在。
return "/index?faces-redirect=true";