jsf导航问题

时间:2011-06-01 20:44:45

标签: jsf

我有一个带有“查看用户”页面的JSF2项目,该页面从会话bean中读取当前选定的用户; userHandler.selectedUser。

通过在应用中使用链接进行导航,可以访问该页面。

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

http://localhost:8080/webapp/userView.jsf

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

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

谢谢, 罗布

2 个答案:

答案 0 :(得分:4)

你想挂钩preRenderView事件,然后在这种情况下发送重定向。

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

public void preRenderView() throws IOException {
    if (userHandler.getSelectedUser() == null) {
        FacesContext.getCurrentInstance().getExternalContext().redirect("home.jsf");
    }
}

答案 1 :(得分:0)

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

enter image description here