zoukankan      html  css  js  c++  java
  • 针对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当中的组成方式,那么就可以在前台展示了。
  • 相关阅读:
    Elasticsearch中父子表上传及查询使用
    python中的正则表达式使用案例
    MySQL函数使用案例大全
    Scrapy爬虫编写流程—以爬取智联为例
    GCD中的dispatch_get_global_queue(long identifier, unsigned long flags)
    (转载)iOS直播类APP开发流程
    MRC下NSNumber,NSString,及NSArray,NSMutableArray的引用计数,个人学习
    转载学习:tabbleView顶部图片的拉伸效果,
    转载学习:Objective-C常用的函数,
    转载--iOS,UIScrollView的相关属性,方法
  • 原文地址:https://www.cnblogs.com/binarysheep/p/4874971.html
Copyright © 2011-2022 走看看