亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Struts2、Spring3、MyBatis3整合ExtJS,完成Che

系統 2165 0

前面介紹了ColumnTree: http://www.cnblogs.com/hoojo/archive/2011/05/11/2043426.html

http://www.cnblogs.com/hoojo/archive/2011/05/11/2043453.html

加入CheckNodeColumnTree

A、首先在AccountAction中添加如下代碼:

        
          private
        
         String jsonText;
      
        ?
      
        
          public
        
         String getJsonText() {
      
        
          return
        
         jsonText;
      
        }
      
        ?
      
        
          public
        
         String checkNodeColumnTreeData() 
        
          throws
        
         Exception {
      
            jsonText = JSONUtil.serialize(results);
      
        
          //ServletActionContext.getResponse().getWriter().print(jsonText);
        
      
        
          return
        
        
          "showData"
        
        ;
      
        }
      

我們不直接使用Servlet的response方法,這樣會使Action耦合Servlet的API。我們直接在Action中提供一個jsonText的屬性,給該屬性提供getter方法。然后當執行checkNodeColumnTreeData這個方法的時候,為jsonText賦值。等待請求成功,跳轉到showData的視圖中直接去取jsonText的值即可。

B、看看struts.xml中的配置

        
          <
        
        
          action
        
        
          name
        
        
          ="account"
        
        
          class
        
        
          ="accountAction"
        
        
          >
        
      
        
          <
        
        
          result
        
        
          type
        
        
          ="redirect"
        
        
          >
        
        account!show.action
        
          </
        
        
          result
        
        
          >
        
      
        
          <
        
        
          result
        
        
          name
        
        
          ="show"
        
        
          >
        
        /show.jsp
        
          </
        
        
          result
        
        
          >
        
      
        
          <
        
        
          result
        
        
          name
        
        
          ="showData"
        
        
          >
        
        /showData.jsp
        
          </
        
        
          result
        
        
          >
        
      
        
          <
        
        
          result
        
        
          name
        
        
          ="tree"
        
        
          type
        
        
          ="json"
        
        
          >
        
      
        
          <
        
        
          param
        
        
          name
        
        
          ="excludeProperties"
        
        
          >
        
        acc
        
          </
        
        
          param
        
        
          >
        
      
        
          <
        
        
          param
        
        
          name
        
        
          ="contentType"
        
        
          >
        
        text/html
        
          </
        
        
          param
        
        
          >
        
      
        
          </
        
        
          result
        
        
          >
        
      
        
          </
        
        
          action
        
        
          >
        
      

就配置一個result就可以了,跳轉到showData頁面

C、下面看看showData頁面

        <%@ page language=
        
          "java"
        
        
          import
        
        =
        
          "java.util.*"
        
         pageEncoding=
        
          "UTF-8"
        
         contentType=
        
          "text/text; charset=UTF-8"
        
        %>
      
        ${jsonText}
      

代碼比較簡單,設置下頁面才contentType、然后用el表達式取出jsonText的值即可。

D、下面看看CheckNodeColumnTree代碼

Ext.hoo.tree.UserCheckNodeColumnTree.js

        
          /**
        
      
        
           * @function CheckNode ColumnTree 多列信息的tree
        
      
        
           * @auhor: hoojo
        
      
        
           * @createDate: Aug 29, 2010 10:39:02 PM
        
      
        
           * @blog: blog.csdn.net/IBM_hoojo
        
      
        
           * @email: hoojo_@126.com
        
      
        
           */
        
      
        Ext.ns(
        
          "Ext.hoo.tree"
        
        );
      
        Ext.hoo.tree.UserCheckNodeColumnTree = Ext.extend(Ext.tree.ColumnTree, {
      
            constructor: 
        
          function
        
         () {
      
                Ext.hoo.tree.UserCheckNodeColumnTree.superclass.constructor.call(
        
          this
        
        , {
      
                    renderTo: 
        
          "show"
        
        ,
      
                    title: 
        
          "遠程數據"
        
        ,
      
                    width: 600,
      
                    hieght: 400,
      
                    autoScroll: 
        
          true
        
        ,
      
                    rootVisible: 
        
          true
        
        ,
      
                    checkModel: 
        
          'cascade'
        
        ,
        
          //級聯多選,如果不需要checkbox,該屬性去掉   
        
      
                      onlyLeafCheckable: 
        
          false
        
        ,
        
          //所有結點可選,如果不需要checkbox,該屬性去掉
        
      
                      columns: [{
      
                        header: 
        
          "編號"
        
        ,
      
                        width: 100,
      
                        dataIndex: 
        
          "accountId"
        
      
                    }, {
      
                        header: 
        
          "用戶名稱"
        
        ,
      
                        width: 100,
      
                        dataIndex: 
        
          "username"
        
      
                    }, {
      
                        header: 
        
          "密碼"
        
        ,
      
                        width: 100,
      
                        dataIndex: 
        
          "password"
        
      
                    }, {
      
                        header: 
        
          "創建時間"
        
        ,
      
                        width: 150,
      
                        dataIndex: 
        
          "createTime"
        
      
                    }],
      
                    loader: 
        
          new
        
         Ext.tree.TreeLoader({
      
                        dataUrl: Ext.hoo.tree.UserCheckNodeColumnTree.TREE_DATA_URL,
      
                        clearOnLoad: 
        
          false
        
        ,
      
                        baseAttrs: {
      
                            uiProvider: Ext.ux.ColumnTreeCheckNodeUI,
      
                            leaf: 
        
          true
        
      
                        }
      
                    }),
      
                    root: 
        
          new
        
         Ext.tree.AsyncTreeNode({
      
                        text: 
        
          "用戶基本信息"
        
        ,
      
                        id: 
        
          "root"
        
      
                    })
      
                });
      
            }
      
        });
      
        ?
      
        Ext.hoo.tree.UserCheckNodeColumnTree.TREE_DATA_URL = 
        
          "account!checkNodeColumnTreeData.action"
        
        ;
      
        ?
      
        Ext.onReady(
        
          function
        
         () {
      
            Ext.BLANK_IMAGE_URL = 
        
          "ext2/resources/images/default/s.gif"
        
        ;
      
        
          new
        
         Ext.hoo.tree.UserCheckNodeColumnTree();
      
        });
      

在webroot目錄的jslib中加入這個文件Ext.hoo.tree.UserCheckNodeColumnTree.js,然后導入到html中即可。

E、上面的代碼用到了Ext.ux.ColumnTreeCheckNodeUI這個UI,我們需要加入這個UI文件Ext.tree.ColumnTreeCheckNodeUI.js,代碼如下:

        
          /*
        
      
        
           * Ext JS Library 2.0
        
      
        
           * Copyright(c) 2006-2007, Ext JS, LLC.
        
      
        
           * licensing@extjs.com
        
      
        
           * 
        
      
        
           * http://extjs.com/license
        
      
        
           */
        
      
        ?
      
        Ext.tree.ColumnTree = Ext.extend(Ext.tree.TreePanel, {
      
        
          //lines:false,
        
      
            borderWidth: Ext.isBorderBox ? 0 : 2, 
        
          // the combined left/right border for each cell
        
      
            cls:
        
          'x-column-tree'
        
        ,
      
            scrollOffset : 18,
      
      
            onRender : 
        
          function
        
        (){
      
                Ext.tree.ColumnTree.superclass.onRender.apply(
        
          this
        
        , arguments);
      
        
          this
        
        .headers = 
        
          this
        
        .body.createChild(
      
                    {cls:
        
          'x-tree-headers '
        
        },
        
          this
        
        .body.dom);
      
        
          var
        
         cols = 
        
          this
        
        .columns, c;
      
        
          var
        
         totalWidth = 0;
      
        ?
      
        
          for
        
        (
        
          var
        
         i = 0, len = cols.length; i < len; i++){
      
                     c = cols[i];
      
                     totalWidth += c.width;
      
        
          this
        
        .headers.createChild({
      
                         cls:
        
          'x-tree-hd '
        
         + (c.cls?c.cls+
        
          '-hd'
        
        :
        
          ''
        
        ),
      
                         cn: {
      
                             cls:
        
          'x-tree-hd-text'
        
        ,
      
                             html: c.header
      
                         },
      
                         style:
        
          'width:'
        
        +(c.width-
        
          this
        
        .borderWidth)+
        
          'px;'
        
      
                     });
      
                }
      
      
        
          this
        
        .headers.createChild({
      
                     cls:
        
          'x-tree-hd '
        
        ,
      
                     cn: {
      
                         html: 
        
          ''
        
      
                     },
      
                     style:
        
          'width:'
        
        +
        
          this
        
        .scrollOffset+
        
          'px;'
        
      
                 });
      
                totalWidth += 
        
          this
        
        .scrollOffset;
      
      
        
          this
        
        .headers.createChild({cls:
        
          'x-clear'
        
        });
      
        
          // prevent floats from wrapping when clipped
        
      
        
          this
        
        .headers.setWidth(totalWidth);
      
                totalWidth -= 
        
          this
        
        .scrollOffset;
      
        
          this
        
        .innerCt.setWidth(totalWidth);
      
            }
      
        });
      
        ?
      
        Ext.tree.ColumnTreeNodeUI = Ext.extend(Ext.tree.TreeNodeUI, {
      
            focus: Ext.emptyFn, 
        
          // prevent odd scrolling behavior
        
      
        ?
      
            renderElements : 
        
          function
        
        (n, a, targetNode, bulkRender){
      
        
          this
        
        .indentMarkup = n.parentNode ? n.parentNode.ui.getChildIndent() : 
        
          ''
        
        ;
      
        ?
      
        
          var
        
         t = n.getOwnerTree();
      
        
          var
        
         cols = t.columns;
      
        
          var
        
         bw = t.borderWidth;
      
        
          var
        
         c = cols[0];
      
        ?
      
        
          var
        
         cb = 
        
          typeof
        
         a.
        
          checked
        
         == 
        
          'boolean'
        
        ;
      
        
          if
        
        (
        
          typeof
        
        
          this
        
        .checkModel != 
        
          'undefined'
        
        ){
      
                    cb = (!
        
          this
        
        .onlyLeafCheckable || n.isLeaf());
      
                }
      
        
          var
        
         href = a.href ? a.href : Ext.isGecko ? 
        
          ""
        
         : 
        
          "#"
        
        ;
      
        
          var
        
         buf = [
        
          '<li class="x-tree-node"><div ext:tree-node-id="'
        
        ,n.id,
        
          '" class="x-tree-node-el x-tree-node-leaf x-unselectable '
        
        , a.cls,
        
          '" unselectable="on">'
        
        ,
      
        
          '<div class="x-tree-col" style="width:'
        
        ,c.width-bw,
        
          'px;">'
        
        ,
      
        
          '<span class="x-tree-node-indent">'
        
        ,
        
          this
        
        .indentMarkup,
        
          "</span>"
        
        ,
      
        
          '<img src="'
        
        , 
        
          this
        
        .emptyIcon, 
        
          '" class="x-tree-ec-icon x-tree-elbow">'
        
        ,
      
        
          '<img src="'
        
        , a.icon || 
        
          this
        
        .emptyIcon, 
        
          '" class="x-tree-node-icon'
        
        ,(a.icon ? 
        
          " x-tree-node-inline-icon"
        
         : 
        
          ""
        
        ),(a.iconCls ? 
        
          " "
        
        +a.iconCls : 
        
          ""
        
        ),
        
          '" unselectable="on">'
        
        ,
      
                            cb ? (
        
          '<input class="x-tree-node-cb" type="checkbox" '
        
         + (a.
        
          checked
        
         ? 
        
          'checked="checked" />'
        
         : 
        
          '/>'
        
        )) : 
        
          ''
        
        ,
      
        
          '<a hidefocus="on" class="x-tree-node-anchor" href="'
        
        ,href,
        
          '" tabIndex="1" '
        
        ,
      
                            a.hrefTarget ? 
        
          ' target="'
        
        +a.hrefTarget+
        
          '"'
        
         : 
        
          ""
        
        , 
        
          '>'
        
        ,
      
        
          '<span unselectable="on">'
        
        , n.text || (a[c.dataIndex]?(c.renderer ? c.renderer(a[c.dataIndex], n, a) : a[c.dataIndex]):
        
          ''
        
        ),
        
          "&nbsp;</span></a>"
        
        ,
      
        
          "</div>"
        
        ];
      
        
          for
        
        (
        
          var
        
         i = 1, len = cols.length; i < len; i++){
      
                     c = cols[i];
      
                     buf.push(
        
          '<div class="x-tree-col '
        
        ,(c.cls?c.cls:
        
          ''
        
        ),
        
          '" style="width:'
        
        ,c.width-bw,
        
          'px;">'
        
        ,
      
        
          '<div class="x-tree-col-text">'
        
        ,(a[c.dataIndex]?(c.renderer ? c.renderer(a[c.dataIndex], n, a) : a[c.dataIndex]):
        
          ''
        
        ),
        
          "&nbsp;</div>"
        
        ,
      
        
          "</div>"
        
        );
      
                 }
      
                 buf.push(
        
          '<div class="x-clear"></div>'
        
        ,
      
        
          '</div>'
        
        ,
      
        
          '<ul class="x-tree-node-ct" style="display:none;"></ul>'
        
        ,
      
        
          "</li>"
        
        );
      
      
        
          if
        
        (bulkRender !== 
        
          true
        
         && n.nextSibling && n.nextSibling.ui.getEl()){
      
        
          this
        
        .wrap = Ext.DomHelper.insertHtml(
        
          "beforeBegin"
        
        ,n.nextSibling.ui.getEl(), buf.join(
        
          ""
        
        ));
      
                }
        
          else
        
        {
      
        
          this
        
        .wrap = Ext.DomHelper.insertHtml(
        
          "beforeEnd"
        
        , targetNode, buf.join(
        
          ""
        
        ));
      
                }
      
        ?
      
        
          this
        
        .elNode = 
        
          this
        
        .wrap.childNodes[0];
      
        
          this
        
        .ctNode = 
        
          this
        
        .wrap.childNodes[1];
      
        
          var
        
         cs = 
        
          this
        
        .elNode.firstChild.childNodes;
      
        
          this
        
        .indentNode = cs[0];
      
        
          this
        
        .ecNode = cs[1];
      
        
          this
        
        .iconNode = cs[2];
      
      
        
          var
        
         index = 3;
      
        
          if
        
        (cb){
      
        
          this
        
        .checkbox = cs[3];
      
                    index++;
      
                }
      
        
          this
        
        .anchor = cs[index];
      
        
          this
        
        .textNode = cs[index].firstChild;
      
            }
      
        });
      
        ?
      
        ?
      
        Ext.ux.ColumnTreeCheckNodeUI = 
        
          function
        
        () {
      
        
          //多選: 'multiple'(默認)
        
      
        
          //單選: 'single'
        
      
        
          //級聯多選: 'cascade'(同時選父和子);'parentCascade'(選父);'childCascade'(選子)
        
      
        
          this
        
        .checkModel = 
        
          'multiple'
        
        ;
      
      
        
          //only leaf can checked
        
      
        
          this
        
        .onlyLeafCheckable = 
        
          false
        
        ;
      
      
            Ext.ux.ColumnTreeCheckNodeUI.superclass.constructor.apply(
        
          this
        
        , arguments);
      
        };
      
        ?
      
        Ext.extend(Ext.ux.ColumnTreeCheckNodeUI, Ext.tree.ColumnTreeNodeUI, {
      
      
            renderElements : 
        
          function
        
        (n, a, targetNode, bulkRender){
      
        
          var
        
         t = n.getOwnerTree();
      
        
          this
        
        .checkModel = t.checkModel || 
        
          this
        
        .checkModel;
      
        
          this
        
        .onlyLeafCheckable = t.onlyLeafCheckable || 
        
          false
        
        ;
      
      
                Ext.ux.ColumnTreeCheckNodeUI.superclass.renderElements.apply(
        
          this
        
        , arguments);
      
      
        
          var
        
         cb = (!
        
          this
        
        .onlyLeafCheckable || n.isLeaf());
      
        
          if
        
        (cb){
      
                    Ext.fly(
        
          this
        
        .checkbox).on(
        
          'click'
        
        , 
        
          this
        
        .check.createDelegate(
        
          this
        
        ,[
        
          null
        
        ]));
      
                }
      
            },
      
      
        
          // private
        
      
            check : 
        
          function
        
        (
        
          checked
        
        ){
      
        
          var
        
         n = 
        
          this
        
        .node;
      
        
          var
        
         tree = n.getOwnerTree();
      
        
          this
        
        .checkModel = tree.checkModel || 
        
          this
        
        .checkModel;
      
      
        
          if
        
        ( 
        
          checked
        
         === 
        
          null
        
         ) {
      
        
          checked
        
         = 
        
          this
        
        .checkbox.
        
          checked
        
        ;
      
                } 
        
          else
        
         {
      
        
          this
        
        .checkbox.
        
          checked
        
         = 
        
          checked
        
        ;
      
                }
      
      
                n.attributes.
        
          checked
        
         = 
        
          checked
        
        ;
      
                tree.fireEvent(
        
          'check'
        
        , n, 
        
          checked
        
        );
      
      
        
          if
        
        (!
        
          this
        
        .onlyLeafCheckable){
      
        
          if
        
        (
        
          this
        
        .checkModel == 
        
          'cascade'
        
         || 
        
          this
        
        .checkModel == 
        
          'parentCascade'
        
        ){
      
        
          var
        
         parentNode = n.parentNode;
      
        
          if
        
        (parentNode !== 
        
          null
        
        ) {
      
        
          this
        
        .parentCheck(parentNode,
        
          checked
        
        );
      
                        }
      
                    }
      
        
          if
        
        (
        
          this
        
        .checkModel == 
        
          'cascade'
        
         || 
        
          this
        
        .checkModel == 
        
          'childCascade'
        
        ){
      
        
          if
        
        ( !n.expanded && !n.childrenRendered ) {
      
                            n.expand(
        
          false
        
        ,
        
          false
        
        ,
        
          this
        
        .childCheck);
      
                        }
        
          else
        
         {
      
        
          this
        
        .childCheck(n);  
      
                        }
      
                    }
      
                } 
        
          else
        
        
          if
        
        (
        
          this
        
        .checkModel == 
        
          'single'
        
        ){
      
        
          var
        
         checkedNodes = tree.getChecked();
      
        
          for
        
        (
        
          var
        
         i=0;i<checkedNodes.length;i++){
      
        
          var
        
         node = checkedNodes[i];
      
        
          if
        
        (node.id != n.id){
      
                            node.getUI().checkbox.
        
          checked
        
         = 
        
          false
        
        ;
      
                            node.attributes.
        
          checked
        
         = 
        
          false
        
        ;
      
                            tree.fireEvent(
        
          'check'
        
        , node, 
        
          false
        
        );
      
                        }
      
                    }
      
                }
      
            },
      
      
        
          // private
        
      
            childCheck : 
        
          function
        
        (node){
      
        
          var
        
         a = node.attributes;
      
        
          if
        
        (!a.leaf) {
      
        
          var
        
         cs = node.childNodes;
      
        
          var
        
         csui;
      
        
          for
        
        (
        
          var
        
         i = 0; i < cs.length; i++) {
      
                        csui = cs[i].getUI();
      
        
          if
        
        (csui.checkbox.
        
          checked
        
         ^ a.
        
          checked
        
        )
      
                            csui.check(a.
        
          checked
        
        );
      
                    }
      
                }
      
            },
      
      
        
          // private
        
      
            parentCheck : 
        
          function
        
        (node ,
        
          checked
        
        ){
      
        
          var
        
         checkbox = node.getUI().checkbox;
      
        
          if
        
        (
        
          typeof
        
         checkbox == 
        
          'undefined'
        
        )
        
          return
        
         ;
      
        
          if
        
        (!(
        
          checked
        
         ^ checkbox.
        
          checked
        
        ))
        
          return
        
        ;
      
        
          if
        
        (!
        
          checked
        
         && 
        
          this
        
        .childHasChecked(node))
        
          return
        
        ;
      
                checkbox.
        
          checked
        
         = 
        
          checked
        
        ;
      
                node.attributes.
        
          checked
        
         = 
        
          checked
        
        ;
      
                node.getOwnerTree().fireEvent(
        
          'check'
        
        , node, 
        
          checked
        
        );
      
      
        
          var
        
         parentNode = node.parentNode;
      
        
          if
        
        ( parentNode !== 
        
          null
        
        ){
      
        
          this
        
        .parentCheck(parentNode,
        
          checked
        
        );
      
                }
      
            },
      
      
        
          // private
        
      
            childHasChecked : 
        
          function
        
        (node){
      
        
          var
        
         childNodes = node.childNodes;
      
        
          if
        
        (childNodes || childNodes.length>0){
      
        
          for
        
        (
        
          var
        
         i=0;i<childNodes.length;i++){
      
        
          if
        
        (childNodes[i].getUI().checkbox.
        
          checked
        
        )
      
        
          return
        
        
          true
        
        ;
      
                    }
      
                }
      
        
          return
        
        
          false
        
        ;
      
            },
      
      
            toggleCheck : 
        
          function
        
        (value){
      
        
          var
        
         cb = 
        
          this
        
        .checkbox;
      
        
          if
        
        (cb){
      
        
          var
        
        
          checked
        
         = (value === undefined ? !cb.
        
          checked
        
         : value);
      
        
          this
        
        .check(
        
          checked
        
        );
      
                }
      
            }
      
        });
      

F、在html頁面中導入這些js庫即可運行示例

        <!DOCTYPE html PUBLIC 
        
          "-//W3C//DTD XHTML 1.0 Transitional//EN"
        
        
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
        
        >
      
        <html>
      
            <head>
      
                <title>UserCheckNodeColumnTree 示例</title>
      
                <meta http-equiv=
        
          "Content-Type"
        
         content=
        
          "text/html;charset=UTF-8"
        
         />
      
                <meta http-equiv=
        
          "author"
        
         content=
        
          "hoojo"
        
        />
      
                <meta http-equiv=
        
          "email"
        
         content=
        
          "hoojo_@126.com"
        
        />
      
                <meta http-equiv=
        
          "ext-lib"
        
         content=
        
          "verson 2.2"
        
        />
      
                <meta http-equiv=
        
          "blog"
        
         content=
        
          "http://blog.csdn.net/IBM_hoojo"
        
        />
      
                <meta http-equiv=
        
          "blog"
        
         content=
        
          "http://hoojo.cnblogs.com"
        
        />
      
                <link rel=
        
          "stylesheet"
        
         type=
        
          "text/css"
        
         href=
        
          "ext2/resources/css/ext-all.css"
        
         />
      
                <link rel=
        
          "stylesheet"
        
         type=
        
          "text/css"
        
         href=
        
          "jslib/column-tree.css"
        
         />
      
                <script type=
        
          "text/javascript"
        
         src=
        
          "ext2/adapter/ext/ext-base.js"
        
        ></script>
      
                <script type=
        
          "text/javascript"
        
         src=
        
          "ext2/ext-all.js"
        
        ></script>        
      
                <script type=
        
          "text/javascript"
        
         src=
        
          "ext2/build/locale/ext-lang-zh_CN-min.js"
        
        ></script>
      
                <script type=
        
          "text/javascript"
        
         src=
        
          "jslib/Ext.tree.ColumnTreeCheckNodeUI.js"
        
        ></script>
      
                <script type=
        
          "text/javascript"
        
         src=
        
          "jslib/Ext.hoo.tree.UserCheckNodeColumnTree.js"
        
        ></script>
      
            </head>
      
      
            <body>
      
                <div id=
        
          "show"
        
         style=
        
          "margin-left: 200px; margin-top: 50px;"
        
        ></div>
      
            </body>
      
        </html>
      

運行后,效果如下:

clip_image002

如果有子節點的話,可以選擇、展開子節點

Struts2、Spring3、MyBatis3整合ExtJS,完成CheckNodeColumnTree


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 网站一级片 | 国产911情侣拍拍在线播放 | 一级毛片成人免费看免费不卡 | 日日添日日摸 | 日韩 欧美 国产 亚洲 中文 | 精品国产免费一区二区 | 香蕉人在线香蕉人在线 | www日韩在线 | 国产成人精品aaaa视频一区 | 久久成人国产精品二三区 | 99精品国产兔费观看久久99 | 深夜网站免费 | 一级免费视频 | 欧美成人毛片 | 九九夜夜 | 日日添日日摸 | 色婷婷国产 | 久久久久久夜精品精品免费啦 | 91欧美在线视频 | 免费黄色一级网站 | 精品欧美一区二区三区精品久久 | 成人精品国产亚洲 | 天天爱天天舔 | 在线免费小视频 | 国产91福利在线精品剧情尤物 | 中文字幕一区婷婷久久 | 久久国产这里只有精品 | 久久精品免费在线观看 | 激情五月综合综合久久69 | 亚洲福利精品一区二区三区 | 欧美性色福利视频在线观看 | 国产成人精品免费午夜 | 国产福利精品视频 | 久草热久草在线视频 | 四虎影视亚洲精品 | 久久免费精品一区二区 | 911精品国产91久久久久 | 国产农村妇女毛片精品久久久 | 午夜精品久久久久 | 国产乱码精品一区二区三上 | 亚洲专区欧美专区 |