Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
针对当前/活动路径使用不同CSS类的JSF导航_Jsf - Fatal编程技术网

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

针对当前/活动路径使用不同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:

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

<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中执行一些字符串比较/操作

您提出的EL
styleClass
建议非常好。无论如何,没有其他简单的方法。到目前为止,您所能做的最好的优化就是在循环中通过一个实例呈现这些链接,以便至少消除代码重复。

您可以使用它来获取当前请求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>
文本