2011-07-28 54 views
0

我有这个菜单:JSF 2:帮助与逻辑编程

<ul class="lavaLamp" id="menu"> 
    <li><a href="./index.xhtml" >Home</a></li> 
    <li class="current"><a href="#">Company</a> 
    //.. 
</ul> 

我想这个菜单是一个组成部分,所以我没有在每一个.xhtml页面复制和粘贴。 但我需要在<li>标记中指定类字段,因此可以应用插件'LavaLamp'。

E.g:当前页面的index.xhtml所以它应该产生:

<ul class="lavaLamp" id="menu"> 
    <li class="current"><a href="./index.xhtml" >Home</a></li> 
    <li><a href="#">Company</a> 
    //.. 
</ul> 

我在想如何做到这一点,但什么也没有说。

有什么想法?

回答

0

后@meriton谈EL,我搜索一下,发现一些有关EL三元,所以这是我的解决方案:

<ul class="lavaLamp" id="menu"> 
    <li class="#{facesContext.viewRoot.viewId == '/index.xhtml' ? 'current' : '' }"><a href="index.xhtml" >Home</a></li> 
    <li class="#{facesContext.viewRoot.viewId == '/pages/company/team.xhtml' ? 'current' : '' }"><a href="pages/company/team.xhtml" >Team</a></li> 
    //.. 
</ul> 
0

我的第一个重构将是:

<ul class="lavaLamp" id="menu"> 
    <li class="#{facesContext.viewRoot.viewId = 'index.html' ? 'current' : ''"><a href="./index.xhtml" >Home</a></li> 
    <li><a href="#">Company</a> 
    //.. 
</ul> 

(全球EL变量facesContext总是指向FacesContext.getCurrentInstance()

+0

它推出此异常:javax.servlet.ServletException:/resources/components/top.xhtml 23,96级=“#{facesContex t.viewRoot.viewId ='index.html'? 'current':''“EL Expression Unbalanced:...#{facesContext.viewRoot.viewId ='index.html'?'current':'' –

+1

它缺少'}',例如:

  • Home