根据我在的页面显示/隐藏组件

时间:2012-02-03 12:26:21

标签: jsf-2

我需要根据用户所在的页面在我的JSF2应用程序中显示或隐藏搜索组件。我试图通过在会话中设置“fromPage”属性来实现这一点,例如:

session.setAttribute("fromPage", "aboutUs");

只要用户点击主页中的链接,就会设置这些属性,并在提供网站页面时检查这些属性。当我使用h:commandLinks时,它运行良好。

但是当我改为h:link时,这会停止工作,因为显然页面上h:链接的所有“结果”方法都会在页面渲染时被调用,因此“fromPage”属性始终代表最后一个“结果“方法被称为 - 它对我的目的无用。

那么,有没有其他方法可以知道用户点击哪个页面?我在哪个页面上?

1 个答案:

答案 0 :(得分:2)

使用UIViewRoot#getViewId()了解当前打开的视图。隐式EL变量UIViewRoot可以使用当前#{view}

<p>Hi user, you're on #{view.viewId}.</p>

<h:panelGroup rendered="#{view.viewId == '/aboutUs.xhtml'}">
    <p>This will be rendered when the current view is aboutUs.xhtml.</p>
</h:panelGroup>