Primefaces p:treeNode 背景色

Primefaces p:treeNode background colour

我有一个包含 primefaces p:tree 元素的边栏。在这里:

<p:tree value="#{sidebarSelectionView.systemRoot}"
               var="treeNodeDescriptor"
               selectionMode="single"
               selection="#{sidebarSelectionView.selectedNode}">
    <p:ajax event="select" update=":unitContentId" />
    <p:treeNode expandedIcon="ui-icon-folder-open" collapsedIcon="ui-icon-folder-collapsed">
       <h:outputText value="#{treeNodeDescriptor.name}"/>
    </p:treeNode>
</p:tree>

树节点由许多嵌套节点组成。每个叶节点都与一个内容页面相关联,如果选择该节点,则会显示该内容页面。

生成的树是这样的:

Agent
    customer1
        subcustomer1
        subcustomer2

如果与 subcustomer1 关联的内容页面更改其内部状态,我如何使节点 Agent, customer1subcustomer1 具有红色背景颜色?内部状态由 <p:poll>.

检查

一种选择是在轮询时将页面状态存储在支持 bean 中,例如在节点数据状态图中。只需使用您的权利 classes.

public class SidebarSelectionView {

  private Map<[NodedataClass], [StateClass]> nodedataStateMap;

  ...
}

有了它,您就可以使用

来设置节点的样式
<h:outputText
  value="#{treeNodeDescriptor.name}" 
  style="background-color: ##{sidebarSelectionView.nodedataStateMap[treeNodeDescriptor].stateName eq 'bad' ? 'FF0000' : '00FF00'};"
/>

或使用自定义样式 classes with

<h:outputText
  value="#{treeNodeDescriptor.name}"
  styleClass="#{sidebarSelectionView.nodedataStateMap[treeNodeDescriptor].stateName eq 'bad' ? 'stateBad' : 'stateGood'}"
/>

示例假设 StateClass 具有 stateName 属性 类型 String .适应你的状态就好了class。我希望你明白了。

别忘了用

更新你的树
<p:poll update="treeId" />

反映状态变化。