我有一个带有“查看用户”页面的JSF2项目,该页面从会话bean中读取当前选定的用户; userHandler.selectedUser。
通过在应用中使用链接进行导航,可以访问该页面。
但是,如果用户尝试通过此URL直接点击“查看用户”页面...
http://localhost:8080/webapp/userView.jsf
...他们看到页面上没有数据(因为userHandler中没有选定的用户)。
我认为我想做的是将用户重定向到应用的主页面,如果他们试图直接点击它。处理这个问题的简单而优雅的方法是什么?
谢谢, 罗布
答案 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)