用于当前/活动路径的不同CSS类的JSF导航

时间:2011-10-06 03:08:48

标签: jsf

我正在尝试在JSF中创建一个菜单模板,其中当前目录的链接具有不同的“当前”或“活动”类。代码目前看起来像:

<ul>
    <li><h:outputLink value="#{request.contextPath}/a/">A</h:outputLink></li>
    <li><h:outputLink value="#{request.contextPath}/b/">B</h:outputLink></li>
    <li><h:outputLink value="#{request.contextPath}/c/">C</h:outputLink></li>
</ul>

我正在考虑使用像styleClass="#{(thisDir == currentDir) ? currentLinkClass : normalLinkClass}"这样的东西。但是我如何获得当前路径?这是否正确,或者有更好的方法吗?

另外,我希望链接基于当前路径,而不仅仅是页面。例如,myapp/a/1.jsfmyapp/a/2.jsf(即myapp/a/*.jsf)应触发A链接的活动类。 (我希望我的解释清楚。)这可能吗?该怎么做?

非常感谢!

2 个答案:

答案 0 :(得分:1)

您可以使用#{request.requestURI}获取当前请求URI。如果需要,您可以使用JSTL fn taglib中的多个EL函数在EL中进行字符串比较/操作。

您提出的EL styleClass建议完全没问题。无论如何,没有其他简单的方法。到目前为止,您可以做的最佳优化是通过<ui:repeat>循环呈现这些链接,以便至少消除代码重复。

答案 1 :(得分:0)

您也可以尝试使用#{view.viewId}

的方法
<h:outputLink 
  styleClass="#{(view.viewId.equals('/admin/authors.xhtml')) ? 'active' : 'inactive'}"
  value="authors.xhtml">Text</h:outputLink>