【问题标题】:JSF 2: Help with logic programmingJSF 2:帮助进行逻辑编程
【发布时间】:2011-10-15 10:21:58
【问题描述】:

我有这个菜单:

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

我希望这个菜单是一个组件,所以我不必在每个 .xhtml 页面中复制和粘贴。 但是我需要在&lt;li&gt;标签中指定class字段,所以可以应用插件'LavaLamp'。

例如:当前页面是 index.xhtml,所以它应该生成:

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

我在想怎么做,但没有结果。

有什么想法吗?

【问题讨论】:

    标签: java jsf jsf-2


    【解决方案1】:

    我的第一次重构是:

    <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()

    【讨论】:

    • 它启动这个异常:javax.servlet.ServletException: /resources/components/top.xhtml 23,96 class="#{facesContext.viewRoot.viewId = 'index.html' ? 'current' : ''" EL 表达式不平衡: ... #{facesContext.viewRoot.viewId = 'index.html' ? '当前':''
    • 它缺少一个 '}',例如:
    • 首页
    【解决方案2】:

    @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>
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签