アプリケーションに別のライブラリを追加しても構わない場合は、OpenFaces TreeTableを使用します。レイジーローディングは、<o:treeTable>
タグにpreloadedNodes = "none"(またはprelodedNodes = "levelsPreloaded:1")を追加するだけで実装でき、ノードの拡張トグルを表示するかどうかも自動的に検出されます。 OpenFaces TreeTableは非常にカスタマイズ可能で、必ずしも複数列のテーブルとして見えるわけではありませんが、単純なツリーとしても表示することができます(例:this page)
このようなTreeTableを宣言できます実際にはより多くのカスタマイズを必要とするが、この例では)考えを示しています
<o:treeTable var="node" preloadedNodes="none">
<o:dynamicTreStructure nodeChildren="#{treeTableBean.nodeChildren}"/>
<o:treeColumn>
<h:outputText value="node.name"/>
</o:treeColumn>
</o:treeTable>
treeTableBean.nodeChildren方法は、「ノード」変数の値をとり、その値がある場合はその子ノード(または戻りルートノードを返す必要がありますヌル)。この方法があなたのケースでどのように見えるかは次のとおりです。
public List getNodeChildren() {
Object node = Faces.var("node");
if (node == null)
return getOffices();
else
return ((Office) node).getEmployees();
}
このムスク作品は、 – caarlos0
元の実装をどのように置き換えることができますか? –