我需要根据用户所在的页面在我的JSF2应用程序中显示或隐藏搜索组件。我试图通过在会话中设置“fromPage”属性来实现这一点,例如:
session.setAttribute("fromPage", "aboutUs");
只要用户点击主页中的链接,就会设置这些属性,并在提供网站页面时检查这些属性。当我使用h:commandLinks时,它运行良好。
但是当我改为h:link时,这会停止工作,因为显然页面上h:链接的所有“结果”方法都会在页面渲染时被调用,因此“fromPage”属性始终代表最后一个“结果“方法被称为 - 它对我的目的无用。
那么,有没有其他方法可以知道用户点击哪个页面?我在哪个页面上?
答案 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>