2016-07-16 17 views
0

私は、素形p:tree要素を含むサイドバーを持っています。ここにあります:Primefaces p:treeNode背景色

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

ツリーノードは多数のネストされたノードで構成されています。各リーフノードは、ノードが選択されている場合に表示されるコンテンツページに関連付けられる。

生成されたツリーはこのように思える:subcustomer1に関連したコンテンツページは、その内部状態を変更した場合

Agent 
    customer1 
     subcustomer1 
     subcustomer2 

どのように私が持っている、ノードAgent, customer1subcustomer1を作ることができますが、赤の背景色を言うの?内部状態は<p:poll>によってチェックされます。

+0

私の回答はどのように役立ちましたか?もし何が間違っていたと私はどのように改善することができますか?コメントを残してください、受け入れるか投票してください。 – irieill

答えて

0

1つのオプションは、ポーリング時にバッキングBeanにページ状態を格納することです(例: nodedata-state-mapに格納します。ちょうどあなたの正しいクラスを使用してください。それと

public class SidebarSelectionView { 

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

    ... 
} 

あなたは

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

を使用してノードをスタイルや

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

例でカスタムスタイルクラスを使用することができますのステート名プロパティでStateClassを想定しています文字列を入力してください。ちょうどあなたの状態クラスに適応してください。私はあなたがそのアイディアを得たことを願っています

ドントは、状態の変化を反映するために

<p:poll update="treeId" /> 

であなたのツリーを更新するのを忘れ。