jsf导航问题

jsf导航问题,jsf,Jsf,我有一个JSF2项目,其中有一个“查看用户”页面,可以从会话bean中读取当前选择的用户;userHandler.selectedUser 该页面旨在通过应用程序中的链接导航来访问 但是,如果用户试图通过此URL直接点击“查看用户”页面 。。。他们看到的页面上没有数据(因为userHandler中没有选定的用户) 我想我想做的是将用户重定向到应用程序的主页面,如果他们试图这样直接点击它。处理这个问题的简单而优雅的方法是什么 谢谢, Rob您希望挂接preRenderView事件,然后在这种情况

我有一个JSF2项目,其中有一个“查看用户”页面,可以从会话bean中读取当前选择的用户;userHandler.selectedUser

该页面旨在通过应用程序中的链接导航来访问

但是,如果用户试图通过此URL直接点击“查看用户”页面

。。。他们看到的页面上没有数据(因为userHandler中没有选定的用户)

我想我想做的是将用户重定向到应用程序的主页面,如果他们试图这样直接点击它。处理这个问题的简单而优雅的方法是什么

谢谢,
Rob

您希望挂接
preRenderView
事件,然后在这种情况下发送重定向

<f:metadata>
    <f:event type="preRenderView" listener="#{bean.preRenderView}" />
</f:metadata>

从一开始就避免此问题的一种方法是将不希望通过URL直接访问的页面放入项目的
WEB-INF
文件夹中。 这样,您的页面就无法通过URL直接访问


不,这不是问题的解决方案。这是一个防止用户看到jsf页面源代码和不同(和现有)Q/a的解决方案
public void preRenderView() throws IOException {
    if (userHandler.getSelectedUser() == null) {
        FacesContext.getCurrentInstance().getExternalContext().redirect("home.jsf");
    }
}