针对当前/活动路径使用不同CSS类的JSF导航
我试图在JSF中创建一个菜单模板,其中当前目录的链接具有不同的“current”或“active”类。代码当前看起来像:针对当前/活动路径使用不同CSS类的JSF导航,jsf,Jsf,我试图在JSF中创建一个菜单模板,其中当前目录的链接具有不同的“current”或“active”类。代码当前看起来像: <ul> <li><h:outputLink value="#{request.contextPath}/a/">A</h:outputLink></li> <li><h:outputLink value="#{request.contextPath}/b/">B</h:
<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>
- A
- B
- C
我正在考虑使用类似于styleClass=“#{(thisDir==currentDir)?currentLinkClass:normalLinkClass}”
。但我如何获得当前路径?这是正确的,还是有更好的方法
另外,我希望链接基于当前路径,而不仅仅是页面。例如,myapp/a/1.jsf
和myapp/a/2.jsf
(即,myapp/a/*.jsf
)应该触发a
链接的活动类。(我希望我的解释清楚)这可能吗?如何做到这一点
多谢各位 您可以使用获取当前请求URI。如有必要,可以使用中的多个EL函数在EL中执行一些字符串比较/操作
您提出的ELstyleClass
建议非常好。无论如何,没有其他简单的方法。到目前为止,您所能做的最好的优化就是在循环中通过一个实例呈现这些链接,以便至少消除代码重复。您可以使用它来获取当前请求URI。如有必要,可以使用中的多个EL函数在EL中执行一些字符串比较/操作
您提出的EL
styleClass
建议非常好。无论如何,没有其他简单的方法。到目前为止,您所能做的最佳优化是通过渲染循环呈现这些链接,以便至少消除代码重复。您也可以尝试使用{view.viewId}
的这种方法:
<h:outputLink
styleClass="#{(view.viewId.equals('/admin/authors.xhtml')) ? 'active' : 'inactive'}"
value="authors.xhtml">Text</h:outputLink>
文本
您也可以尝试使用{view.viewId}
的这种方法:
<h:outputLink
styleClass="#{(view.viewId.equals('/admin/authors.xhtml')) ? 'active' : 'inactive'}"
value="authors.xhtml">Text</h:outputLink>
文本