列parentid、childidを持つデータベーステーブルがあります。Primefaces ツリーを使用してテーブル データをロードする jsf ツリー ビューを作成したいと考えています。与えられた例は静的データです。誰か助けてください。感謝します。ありがとう。
4725 次
2 に答える
3
XHTML
<h:form id="form">
<p:tree value="#{dynamicTreeBean.root}" var="node" dynamic="true" cache="true" id="tree">
<p:ajax event="expand" listener="#{dynamicTreeBean.onNodeExpand}" />
<p:treeNode>
<h:outputText value="#{node}"/>
</p:treeNode>
</p:tree>
</h:form>
ジャワ
import java.util.Random;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.primefaces.event.NodeExpandEvent;
import org.primefaces.model.DefaultTreeNode;
import org.primefaces.model.TreeNode;
@ManagedBean
@SessionScoped
public class DynamicTreeBean {
private TreeNode root;
public DynamicTreeBean() {
root = new DefaultTreeNode("Root", null);
TreeNode dynamicTreeNode = new DefaultTreeNode("First", root);
//<Add dummy node: This is to have + sign in node to be able to expand it in GUI>
TreeNode node0 = new DefaultTreeNode("fake", dynamicTreeNode);
//<Add dummy node>
}
public TreeNode getRoot() {
return root;
}
static Random random = new Random();
public void onNodeExpand(NodeExpandEvent event) {
//<Remove dummy node>
if(event.getTreeNode().getChildCount()==1){
event.getTreeNode().getChildren().remove(0);
}
//</Remove dummy node>
//<Generate some random children>
int childrenCount = random.nextInt(9)+1;
for(int i=0;i<childrenCount;i++){
TreeNode tn = new DefaultTreeNode("-child-"+i, event.getTreeNode());
//<Add dummy node>
new DefaultTreeNode("fake", tn);
//</Add dummy node>
}
//</Generate some random children>
}
}
于 2013-01-03T19:17:10.047 に答える
0
「 DefaultTreeNode」を拡張するクラスを作成し、DefaultTreeNodeメソッドを上書きしてニーズに合わせ、適切なデータを使用することで、動的ツリーノードを作成できます。
次に、新しいクラスをインスタンス化して、独自のノードを作成します。
Beanにルートノードを指定する必要があります(getメソッドを使用)。
于 2012-04-23T15:41:43.437 に答える