在不使用绑定的情况下访问同一标签内的标签属性

Accessing tag attribute within the same tag without using binding

我正在使用 PrimeFaces 编写一个简单的菜单,我想知道我是否可以访问其内部的标签属性。让我解释一下:

...
<p:menuitem value="#{labels['menu.home']}" url="/pages/index.jsf"
            styleClass="#{view.viewId == '/pages/index.jsf' ? 'nav-selected-menuitem' : ''}"/>
...

由于这将在更多页面上重复,有没有办法做这样的事情:

<p:menuitem value="#{labels['menu.home']}" url="/pages/index.jsf"
            styleClass="#{view.viewId == url ? 'nav-selected-menuitem' : ''}"/>

其中 url 与此 p:menuitem 标记中的相同 url 属性。

这可行吗?

组件本身由 #{component} 提供。

所以,应该这样做:

<p:menuitem ... url="/pages/index.jsf"
    styleClass="#{view.viewId == component.url ? 'nav-selected-menuitem' : ''}" />

请注意,如果组件的渲染器实现不当(即它没有正确执行 pushComponentToEL() as mandated by encodeBegin()),这可能会失败。这反过来值得组件库维护者的问题报告。

另请参阅: