针对dhtmlX当中的treegrid在java类当中的封装实现的步骤(后台代码)

  1. 查看API实现的方式
  2. 了解其返回值的解析方式
  3. 使用Java类进行封装并且实现返回xml的String到前台

 

查看API的实现方式,dhtmlx的官方文档中

<?xml version='1.0' encoding='utf-8'?>
<rows parent='000125103260000300084800'>
    <row id='000103052220000300207475' xmlkids='1'>
        <cell image='305.gif'>C</cell>
        <cell>
            <![CDATA[01]]>
      </cell>
        <userdata name='canRefresh'>true</userdata>
    </row>
</rows>
<?xml version='1.0' encoding='utf-8'?>
<rows parent="000125103260000300084800">
    <row>
      <userdata name='canRefresh'>true</userdata>
        <cell image='o.gif'>
            <![CDATA[A]]>
      </cell>
        <cell image='o.gif'>
            <![CDATA[01]]>
        </cell>
    </row>
</rows>

从xml文档中便可得知:

1.Rows 节点当中存放的是Row的节点 一对多的关系,同时属性parent表示的是Row节点id的属性表示的上下级的关系

2.Row节点当中有Userdata的属性 是一对多的关系,可以放入多个值来表示在列当中不能显示的一些值,例如当前行的ID

3.Row节点当中含有Cell节点,是一对多的关系 Cell表示的是每行当中的单元格

根据上面的分析,开始封装代码

Cell.java

 1 /**
 2  * @Title Cell.java
 3  * @Package 
 4  * @author 
 5  * @date 2015-10-12 上午11:02:43
 6  * @version V1.0
 7  */
 8 
 9 
10 /**
11  * @ClassName Cell
12  * @author
13  * @date 2015-10-12 上午11:02:43
14  */
15 public class Cell {
16     private String image = "";
17     private String value = "";
18 
19     public Cell() {
20     }
21 
22     public Cell(String value)
23     {
24         this.value = value;
25     }
26     public Cell(String value, String image) {
27         this.image = image;
28         this.value = value;
29     }
30 
31     /**
32      * @return the image
33      */
34     public String getImage() {
35         return image;
36     }
37 
38     /**
39      * 设置图片路径
40      * 
41      * @param image
42      *            the image to set
43      */
44     public void setImage(String image) {
45         this.image = image;
46     }
47 
48     /**
49      * 获取cell当中的值
50      * 
51      * @return the value
52      */
53     public String getValue() {
54         return value;
55     }
56 
57     /**
58      * 设置cell当中的值
59      * 
60      * @param value
61      *            the value to set
62      */
63     public void setValue(String value) {
64         this.value = value;
65     }
66 
67     /* (non-Javadoc)
68      * @see java.lang.Object#toString()
69      */
70     @Override
71     public String toString() {
72         return "Cell [image=" + image + ", value=" + value + "]";
73     }
74     
75 }
Cell.java

在Cell对象中,

private String image = "";
private String value = "";

image 表示的是image的名称,Value则是Cell<cell>value</cell>的值

UserData.java

 1 /**
 2  * @Title UserData.java
 3  * @Package 
 4  * @author 
 5  * @date 2015-10-12 上午10:58:35
 6  * @version V1.0
 7  */
 8 package 
 9 
10 /**
11  * @ClassName UserData
12  * @author 
13  * @date 2015-10-12 上午10:58:35 
14  */
15 public class UserData {
16     private String Name = "";
17     private String value = "";
18     
19     /**
20      * @param name
21      * @param value
22      */
23     public UserData(String name, String value) {
24         super();
25         Name = name;
26         this.value = value;
27     }
28 
29     /**
30      * 
31      */
32     public UserData() {
33         super();
34         this.Name = "";
35         this.value="";
36     }
37 
38     /**
39      * 获取属性name的值
40      * @return the name 
41      */
42     public String getName() {
43         return Name;
44     }
45     /**
46      * 设置属性name的值
47      * @param name the name to set
48      */
49     public void setName(String name) {
50         Name = name;
51     }
52     /**
53      * 获取value的值 true
54      *  <userdata name='canRefresh'>true</userdata>
55      * @return the value
56      */
57     public String getValue() {
58         return value;
59     }
60     /**
61      * 设置value的值 true
62      *  <userdata name='canRefresh'>true</userdata>
63      * @param value the value to set
64      */
65     public void setValue(String value) {
66         this.value = value;
67     }
68 
69     /* (non-Javadoc)
70      * @see java.lang.Object#toString()
71      */
72     @Override
73     public String toString() {
74         return "UserData [Name=" + Name + ", value=" + value + "]";
75     }
76     
77     
78 }
UserData.java

在UserData对象中,

private String Name = "";
private String value = "";

name表示的是属性的name的值,value则是<userdata>value</userdata>的值

 1 /**
 2  * @Title Row.java
 3  * @Package 
 4  * @author 
 5  * @date 2015-10-12 上午11:06:34
 6  * @version V1.0
 7  */
 8 
 9 import java.util.List;
10 
11 /**
12  * @ClassName Row
13  * @author 
14  * @date 2015-10-12 上午11:06:34 
15  */
16 public class Row {
17 private List<Cell> cells ;
18 private String id="";
19 private String xmlkids="";
20 /**
21  * @return the xmlkids
22  */
23 public String getXmlkids() {
24     return xmlkids;
25 }
26 /**
27  * @param xmlkids the xmlkids to set
28  */
29 public void setXmlkids(String xmlkids) {
30     this.xmlkids = xmlkids;
31 }
32 /**
33  * @return the id
34  */
35 public String getId() {
36     return id;
37 }
38 /**
39  * @param id the id to set
40  */
41 public void setId(String id) {
42     this.id = id;
43 }
44 private List<UserData> userDatas;
45 /**
46  * @return the userDatas
47  */
48 public List<UserData> getUserDatas() {
49     return userDatas;
50 }
51 /**
52  * @param userDatas the userDatas to set
53  */
54 public void setUserDatas(List<UserData> userDatas) {
55     this.userDatas = userDatas;
56 }
57 /**
58  * @return the cells
59  */
60 public List<Cell> getCells() {
61     return cells;
62 }
63 /**
64  * @param cells the cells to set
65  */
66 public void setCells(List<Cell> cells) {
67     this.cells = cells;
68 }
69 /* (non-Javadoc)
70  * @see java.lang.Object#toString()
71  */
72 @Override
73 public String toString() {
74     return "Row [cells=" + cells + ", id=" + id + ", userDatas=" + userDatas
75             + ", xmlkids=" + xmlkids + "]";
76 }
77 
78 }
Row.java

private List<Cell> cells ;
private String id="";
private String xmlkids="";

该行对象当中存放的是cells,也就是单个单元格,id表示当前行的id,xmlkids表示是否有子节点,1表示有子节点

Rows.java

 1 /**
 2  * @Title Rows.java
 3  * @Package 
 4  * @author 
 5  * @date 2015-10-12 上午11:09:47
 6  * @version V1.0
 7  */
 8 
 9 
10 import java.util.List;
11 
12 /**
13  * @ClassName Rows
14  * @author 
15  * @date 2015-10-12 上午11:09:47 
16  */
17 public class Rows {
18     /**
19      * @return the rows
20      */
21     private List<Row> rows;
22     private String parent="";
23     public List<Row> getRows() {
24         return rows;
25     }
26     /**
27      * @param rows the rows to set
28      */
29     public void setRows(List<Row> rows) {
30         this.rows = rows;
31     }
32     /**
33      * @return the parent
34      */
35     public String getParent() {
36         return parent;
37     }
38     /**
39      * @param parent the parent to set
40      */
41     public void setParent(String parent) {
42         this.parent = parent;
43     }
44     /* (non-Javadoc)
45      * @see java.lang.Object#toString()
46      */
47     @Override
48     public String toString() {
49         return "Rows [parent=" + parent + ", rows=" + rows + "]";
50     }
51     
52     
53 }
Rows.java

private List<Row> rows;
private String parent="";

多行对象当中存放的是List<Row>对象,表示的是存放的是多行,parent表示的是父节点的ID,和row当中的id相关

TreeGrid.java

  1 /**
  2  * @Title TreeGrid.java
  3  * @Package 
  4  * @author 
  5  * @date 2015-10-12 上午11:16:58
  6  * @version V1.0
  7  */
  8 
  9 
 10 
 11 import java.util.ArrayList;
 12 import java.util.List;
 13 
 14 import org.slf4j.Logger;
 15 import org.slf4j.LoggerFactory;
 16 
 17 
 18 /**
 19  * @ClassName TreeGrid
 20  * @author
 21  * @date 2015-10-12 上午11:16:58
 22  */
 23 public class TreeGrid {
 24     private String xmlHeader = XMLUtils.getXmlHeader();
 25     private Logger logger = LoggerFactory.getLogger(this.getClass());
 26 
 27     /**
 28      * @return the xmlHeader
 29      */
 30     public String getXmlHeader() {
 31         return xmlHeader;
 32     }
 33 
 34     /**
 35      * @param xmlHeader
 36      *            the xmlHeader to set
 37      */
 38     public void setXmlHeader(String xmlHeader) {
 39         this.xmlHeader = xmlHeader;
 40     }
 41 
 42     /**
 43      * 转换成xml文件输出
 44      * 
 45      * @param rows
 46      * @return String
 47      * @author 
 48      * @date 2015-10-12 上午11:21:18
 49      */
 50     public String asXml(Rows rows) {
 51         StringBuffer stringBuffer = new StringBuffer();
 52         stringBuffer.append(this.xmlHeader);
 53         stringBuffer.append("<rows");
 54         // 设置parent
 55         String parent = rows.getParent();
 56         if (!"".equals(parent) && rows.getParent() != null) {
 57             stringBuffer.append("   parent=");
 58             stringBuffer.append("'");
 59             stringBuffer.append(rows.getParent());
 60             stringBuffer.append("'");
 61             stringBuffer.append(">");
 62         } else {
 63             stringBuffer.append(">");
 64         }
 65         // 遍历rows 也就是拼接row
 66         if (rows.getRows() != null) {
 67             for (int i = 0; i < rows.getRows().size(); i++) {
 68                 // 遍历cells 拼接cell,userDate
 69                 Row cells = rows.getRows().get(i);
 70                 // 拼接cell
 71                 stringBuffer.append(this.appendCells( cells));
 72             }
 73         }else
 74         {
 75             stringBuffer.append(">");
 76         }
 77         // 最后拼接上
 78         stringBuffer.append("</rows>");
 79         logger.debug("ROWS");
 80         logger.debug(stringBuffer.toString());
 81         return stringBuffer.toString();
 82     }
 83     
 84     /**
 85      * 拼接cells
 86      * @param stringBuffer
 87      * @param cells
 88      * @return StringBuffer
 89      * @author 
 90      * @date 2015-10-12 下午01:58:55
 91      */
 92     private StringBuffer appendCells(Row cells)
 93     {
 94         // 拼接cell
 95         StringBuffer stringBuffer = new StringBuffer();
 96         stringBuffer.append("<row");
 97         //拼装属性xmlKids
 98         if(!"".equals(cells.getXmlkids())&&cells.getXmlkids()!=null)
 99         {
100             stringBuffer.append("    xmlkids=");
101             stringBuffer.append("'");
102             stringBuffer.append(cells.getXmlkids());
103             stringBuffer.append("'");
104         }
105         //拼装属性id
106         if(!"".equals(cells.getId())&&cells.getId()!=null)
107         {
108             stringBuffer.append("   id=");
109             stringBuffer.append("'");
110             stringBuffer.append(cells.getId());
111             stringBuffer.append("'");
112             stringBuffer.append(">");
113         }else
114         {
115             stringBuffer.append(">");
116         }
117         for (int c = 0; c < cells.getCells().size(); c++) {
118             // 拼接cells
119             stringBuffer.append("<cell ");
120             if (!"".equals(cells.getCells().get(c).getImage())
121                     && cells.getCells().get(c) != null) {
122                 stringBuffer.append("   image=");
123                 stringBuffer.append("'");
124                 stringBuffer.append(cells.getCells().get(c).getImage());
125                 stringBuffer.append("'");
126                 stringBuffer.append(">");
127             } else {
128                 stringBuffer.append(">");
129             }
130             stringBuffer.append("<![CDATA[");
131             stringBuffer.append(cells.getCells().get(c).getValue());
132             stringBuffer.append("]]>");
133             stringBuffer.append("</cell>");
134         }
135         //拼接userdata
136         stringBuffer.append(this.appendUserData(cells));
137         stringBuffer.append("</row>");
138         logger.debug("CELLS");
139         logger.debug(stringBuffer.toString());
140         return stringBuffer;
141     }
142     
143     /**
144      * 拼接userData
145      * @param stringBuffer
146      * @param cells
147      * @return StringBuffer
148      * @author 
149      * @date 2015-10-12 下午01:59:07
150      */
151     private StringBuffer appendUserData(Row cells)
152     {
153         // 拼接userDate
154         StringBuffer stringBuffer = new StringBuffer();
155         if (cells.getUserDatas()!=null&&!cells.getUserDatas().isEmpty()) {
156             for (int i = 0; i < cells.getUserDatas().size(); i++) {
157                 stringBuffer.append("<userdata");
158                 stringBuffer.append("   name=");
159                 stringBuffer.append("'");
160                 stringBuffer.append(cells.getUserDatas().get(i).getName());
161                 stringBuffer.append("'");
162                 stringBuffer.append(">");
163                 stringBuffer.append(cells.getUserDatas().get(i).getValue());
164                 stringBuffer.append("</userdata>");
165             }
166         }
167         logger.debug("USERDATA");
168         logger.debug(stringBuffer.toString());
169         return stringBuffer;
170     }
171     
172     /**
173      * 
174      * @param args void
175      * @author 
176      * @date 2015-10-12 下午03:40:46
177      */
178     public static void main(String[] args) {
179         
180         /*        
181          * <?xml version='1.0' encoding='utf-8'?>
182                 <rows>
183                     <row id='000125103260000300084800' xmlkids='1'>
184                         <cell image='2510.gif'>OLT设备</cell>
185                         <cell>
186                             <![CDATA[HCHC009/Z01/OLT193744 ]]>
187                       </cell>
188                     </row>
189                 </rows>
190                 */
191                 
192 
193         /*        
194          * <?xml version='1.0' encoding='utf-8'?>
195                 <rows parent='000125103260000300084800'>
196                     <row id='000103052220000300207475' xmlkids='1'>
197                         <cell image='305.gif'>机框</cell>
198                         <cell>
199                             <![CDATA[01]]>
200                       </cell>
201                         <userdata name='canRefresh'>true</userdata>
202                     </row>
203                 </rows>
204                 */
205                 
206                 TreeGrid treeGrid = new TreeGrid();
207                 Rows rows = new Rows();
208                 rows.setParent("000125103260000300084800");
209                 List<Row>  rowss = new ArrayList<Row>();
210                 Row e = new Row();
211                 e.setId("000125103260000300084800");
212                 UserData userdate = new UserData();
213                 userdate.setName("canRefresh");
214                 userdate.setValue("true");
215                 List<UserData> listUserData = new ArrayList<UserData>();
216                 listUserData.add(userdate);
217                 e.setUserDatas(listUserData);
218                 List<Cell> cells  = new ArrayList<Cell>();
219                 Cell cell1 = new Cell();
220                 cell1.setImage("o.gif");
221                 cell1.setValue("01");
222                 Cell cell2 = new Cell();
223                 cell2.setImage("o.gif");
224                 cell2.setValue("机框");
225                 cells.add(cell2);
226                 cells.add(cell1);
227                 e.setCells(cells);
228                 rowss.add(e);
229                 rows.setRows(rowss);
230                 System.out.println(treeGrid.asXml(rows));
231             }
232 }
TreeGrid.java

private String xmlHeader = XMLUtils.getXmlHeader(); 表示的xml的头部信息

<?xml version='1.0' encoding='utf-8'?>

方法public String asXml(Rows rows)用来将组装好的数据展现出来,只要符合了API当中的组成方式,那么就可以在前台展示了。
原文地址:https://www.cnblogs.com/binarysheep/p/4874971.html