<s:tree /> 태그를 이용해서 트리를 구현하는 예제를 작성합니다.
결과는 다음과 같습니다.
[TreeNode.java: 모델 클래스]
package example.chapter6;
import java.util.ArrayList;
import java.util.List;
public class TreeNode {
private String id;
private String name;
private List children = new ArrayList();
public TreeNode() {}
public TreeNode(String id, String name, TreeNode... children) {
this.id = id;
this.name = name;
this.children = new ArrayList();
for (TreeNode child : children) {
this.children.add(child);
}
}
public List getChildren() {return children;}
public void setChildren(List children) {this.children = children;}
public String getId() {return id;}
public void setId(String id) {this.id = id;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
}
[TreeSampleAction.java : 액션 클래스]
package example.chapter6;
import com.opensymphony.xwork2.ActionSupport;
public class TreeSampleAction extends ActionSupport {
private TreeNode nodeRoot;
public String execute() throws Exception {
nodeRoot = new TreeNode("00000", "00000",
new TreeNode("10000", "10000",
new TreeNode("11000", "11000"),
new TreeNode("12000", "12000")),
new TreeNode("20000", "20000",
new TreeNode("21000", "21000"),
new TreeNode("22000", "22000"))
);
return "success";
}
public TreeNode getNodeRoot() {return nodeRoot;}
public void setNodeRoot(TreeNode nodeRoot) {this.nodeRoot = nodeRoot;}
}
[treeSample.jsp : JSP]
<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>tree sample</title>
<s:head theme="ajax" debug="true" />
</head>
<body>
<s:tree
theme="ajax"
rootNode="%{nodeRoot}"
childCollectionProperty="children"
nodeIdProperty="id"
nodeTitleProperty="name"
templateCssPath="style/tree.css" toggle="fade" />
</body>
</html>
[struts.xml : 설정파일]
...
<action name="treeSample" class="example.chapter6.TreeSampleAction">
<result>/chapter6/treeSample.jsp</result>
</action>
...