<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JBOSS 點(diǎn)滴

    豐豐的博客

    springboot中樹(shù)形結(jié)構(gòu)的開(kāi)發(fā)

    POM中引入
            <!--JSON樹(shù)形結(jié)構(gòu) 轉(zhuǎn)換-->
            
    <dependency>
                
    <groupId>net.sf.json-lib</groupId>
                
    <artifactId>json-lib</artifactId>
                
    <version>2.4</version>
                
    <classifier>jdk15</classifier>
            
    </dependency>
    實(shí)體類創(chuàng)建
    import net.sf.json.JSONArray;

    import java.util.ArrayList;
    import java.util.List;

    /**
     * 構(gòu)造目錄JSON樹(shù)
     * Created by   network on 2019/5/22
     
    */
    public class TreeBuilder {

        List
    <Node> nodes = new ArrayList<>();

        
    public String buildTree(List<Node> nodes) {

            TreeBuilder treeBuilder 
    = new TreeBuilder(nodes);

            
    return treeBuilder.buildJSONTree();
        }

        
    public TreeBuilder() {
        }

        
    public TreeBuilder(List<Node> nodes) {
            
    super();
            
    this.nodes = nodes;
        }

        
    // 構(gòu)建JSON樹(shù)形結(jié)構(gòu)
        public String buildJSONTree() {
            List
    <Node> nodeTree = buildTree();
            JSONArray jsonArray 
    = JSONArray.fromObject(nodeTree);
            
    return jsonArray.toString();
        }

        
    // 構(gòu)建樹(shù)形結(jié)構(gòu)
        public List<Node> buildTree() {
            List
    <Node> treeNodes = new ArrayList<>();
            List
    <Node> rootNodes = getRootNodes();
            
    for (Node rootNode : rootNodes) {
                buildChildNodes(rootNode);
                treeNodes.add(rootNode);
            }
            
    return treeNodes;
        }

        
    // 遞歸子節(jié)點(diǎn)
        public void buildChildNodes(Node node) {
            List
    <Node> children = getChildNodes(node);
            
    if (!children.isEmpty()) {
                
    for (Node child : children) {
                    buildChildNodes(child);
                }
                node.setChildren(children);
            }
        }

        
    // 獲取父節(jié)點(diǎn)下所有的子節(jié)點(diǎn)
        public List<Node> getChildNodes(Node pnode) {
            List
    <Node> childNodes = new ArrayList<>();
            
    for (Node n : nodes) {
                
    if (pnode.getId().equals(n.getPid())) {
                    childNodes.add(n);
                }
            }
            
    return childNodes;
        }

        
    // 判斷是否為根節(jié)點(diǎn)
        public boolean rootNode(Node node) {
            
    boolean isRootNode = true;
            
    for (Node n : nodes) {
                
    if (node.getPid().equals(n.getId())) {
                    isRootNode 
    = false;
                    
    break;
                }
            }
            
    return isRootNode;
        }

        
    // 獲取集合中所有的根節(jié)點(diǎn)
        public List<Node> getRootNodes() {
            List
    <Node> rootNodes = new ArrayList<>();
            
    for (Node n : nodes) {
                
    if (rootNode(n)) {
                    rootNodes.add(n);
                }
            }
            
    return rootNodes;
        }

        
    public static class Node {

            
    private String id;
            
    private String pid;
            
    private String name;
            
    private List<Node> children;

            
    public Node() {
            }

            
    public Node(String id, String pid, String name) {
                
    super();
                
    this.id = id;
                
    this.pid = pid;
                
    this.name = name;
            }

            
    public String getId() {
                
    return id;
            }

            
    public void setId(String id) {
                
    this.id = id;
            }

            
    public String getPid() {
                
    return pid;
            }

            
    public void setPid(String pid) {
                
    this.pid = pid;
            }

            
    public String getName() {
                
    return name;
            }

            
    public void setName(String name) {
                
    this.name = name;
            }


            
    public List<Node> getChildren() {
                
    return children;
            }

            
    public void setChildren(List<Node> children) {
                
    this.children = children;
            }
        }
    }
    mapper.xml
        <!--根據(jù)條件查詢返回Node-->
        
    <select id="findByItemtypeTree" parameterType="BsItemtype" resultType="Node">
            SELECT upcode as pid,itemname as name,itemtypecode as id FROM 表名 WHERE 1=1
            
    <if test="upcode != null  and upcode != '' ">
                and upcode = #{值}
            
    </if>
        
    </select>
    controller:返回結(jié)果
        //樹(shù)形結(jié)構(gòu)
        @RequestMapping("left")
        ModelAndView left() 
    throws JSONException {
            String mavStr 
    = "";
            BsItemtype queryItemtype 
    = new BsItemtype();
            
    //查詢根目錄樹(shù)
          
    //  queryItemtype.setUpcode("00");
            
    // 獲取全部目錄節(jié)點(diǎn)
            List<TreeBuilder.Node> itemtypeTree = itemtypeService.findByItemtypeTree();

            
    // 拼裝樹(shù)形json字符串
             mavStr = new TreeBuilder().buildTree(itemtypeTree);
            mavStr 
    = mavStr.replaceAll("\"children\"","\"nodes\"");
            mavStr
    = mavStr.replaceAll("\"id\"","\"value\"");
            mavStr 
    = mavStr.replaceAll("\"name\"","\"text\"");
            ModelAndView mav 
    = new ModelAndView("/bs/itemtype/itemtypeLeft.html");//配置返回路徑
            System.out.println(mavStr);
            mav.addObject(
    "mavStr", mavStr.toString());
            
    return mav;
        }
    DAO層:
    List<TreeBuilder.Node> findByItemtypeTree();

    html
    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org">
    <html lang="en">
    <head>
        
    <meta charset="UTF-8">
        
    <title></title>

        
    <!-- Required Stylesheets -->
        
    <link href="/oastyle/css/bootstrap.css" rel="stylesheet">
        
    <!-- Required Javascript -->
        
    <script src="/js/jquery.js"></script>
        
    <script src="/js//bootstrap-treeview.js"></script>
    </head>
    <body>
    <div id="tree"></div>
    <script th:inline="javascript">
    var tree = eval([[${mavStr}]]);
             
    function getTree() {
            
    // Some logic to retrieve, or generate tree structure
            return tree;
        }

        $('#tree').treeview({
            data: getTree(),
            enableLinks: 
    true});

        $('#tree').on('nodeSelected',
    function(event, data) {
              window.parent.itemtypeRight.location.href
    ="/itemtype/list?upcode="+data.value;
        });

    </script>

    </body>
    </html>

    posted on 2019-05-21 19:08 半導(dǎo)體 閱讀(2069) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲国产精品一区二区成人片国内| 午夜亚洲国产精品福利| 亚洲AV无码不卡在线播放| 国产亚洲美女精品久久久2020| 亚洲国产中文字幕在线观看 | 一区二区在线免费视频| 一个人看的免费观看日本视频www| 美女裸体无遮挡免费视频网站| 国产亚洲人成在线播放| 免费国产污网站在线观看不要卡| 精品视频免费在线| jizz免费在线影视观看网站| 国产精品永久免费| 国内精品一级毛片免费看| 午夜不卡久久精品无码免费| 精品无码无人网站免费视频 | 日本高清不卡中文字幕免费| 日韩毛片免费一二三| 中国性猛交xxxxx免费看| 亚洲人成人网毛片在线播放| 亚洲国产精品成人网址天堂| 日韩精品无码专区免费播放| 国产在线98福利播放视频免费 | 大地影院MV在线观看视频免费| 亚洲欧美日韩一区二区三区 | 精品国产亚洲一区二区三区| 亚洲第一成年男人的天堂| 亚洲视频一区在线播放| 亚洲AV成人噜噜无码网站| WWW亚洲色大成网络.COM| g0g0人体全免费高清大胆视频| 日韩免费高清播放器| 亚洲免费中文字幕| 日韩精品免费一区二区三区| 亚洲无码黄色网址| 久久久久亚洲AV无码专区首JN| 国产成人精品日本亚洲专| 免费一级毛suv好看的国产网站 | 久久久精品视频免费观看| 最近中文字幕高清免费中文字幕mv| 成人超污免费网站在线看|