• 关于EasyUI中异步Tree的构建


      1、使用EasyUI可以很方便的异步构建树,构建树时需要在数据库上添加一些必须的字段。经过测试,必须的字段包括id,text,state,由于动态构建树,需要知道响应的父节点,所以还需要pid字段。

      其中,如果是父节点,那么state字段的值应该为closed,叶节点为open。

      具体在EasyUI官网有说明:  

      

      

       节点state默认是open,当为state为close时表示有子节点,并且展开是会异步加载数据,所以需要在数据库中将父节点state标识位closed。

       2、系统持久层框架使用Mybatis时,如果传入参数是Integer、Long、String等简单的对象,并且在mapper.xml中使用 if -- test 或者 choose -- when --- test对参数进行判断,需要在对应的接口方法参数上添加@param注解,或者将判断中的参数改为_parameter,

       否则将会出现类似"There is no getter for property named 'pid' in 'class java.lang.String'"这样的异常。

        如图两种颜色的搭配是ok的。

       

     1 public interface MenuMapper extends MyMapper<Menu> {
     2 //    List<Menu> getMenuByPid(@Param("pid") Integer pid);
     3     List<Menu> getMenuByPid(Integer pid);
     4 }
     5 
     6 
     7   <select id="getMenuByPid" resultMap="BaseResultMap">
     8     select id, pid, text, url, menu_order, state
     9     from menu
    10     <where>
    11       <choose>
    12         <!--<when test="pid != null and pid != ''">-->
    13         <when test="_parameter != null and _parameter != ''">
    14           and pid = #{pid}
    15         </when>
    16         <otherwise>
    17           and pid is null
    18         </otherwise>
    19       </choose>
    20 
    21     </where>
    22   </select>

      EasyUI简单异步tree示例:

      easyui-tree.html

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>easyui-tree</title>
     6     <link rel="stylesheet" href="../static/easyui/themes/icon.css">
     7     <link id="themeName" rel="stylesheet" href="../static/easyui/themes/default/easyui.css">
     8 
     9 </head>
    10 <body>
    11 
    12 <ul id="menu" class="easyui-tree" data-options="url : 'getMenuByPid'" ></ul>
    13 
    14 
    15 <script src="../static/easyui/jquery.min.js"></script>
    16 <script src="../static/easyui/jquery.easyui.min.js"></script>
    17 <script src="../static/easyui/locale/easyui-lang-zh_CN.js"></script>
    18 
    19 </body>
    20 </html>

      menu.sql

     1 SET FOREIGN_KEY_CHECKS=0;
     2 
     3 -- ----------------------------
     4 -- Table structure for menu
     5 -- ----------------------------
     6 DROP TABLE IF EXISTS `menu`;
     7 CREATE TABLE `menu` (
     8   `id` bigint(20) NOT NULL AUTO_INCREMENT,
     9   `pid` bigint(20) DEFAULT NULL,
    10   `text` varchar(100) DEFAULT NULL,
    11   `url` varchar(100) DEFAULT NULL,
    12   `menu_order` smallint(10) DEFAULT NULL,
    13   `state` varchar(50) DEFAULT NULL,
    14   PRIMARY KEY (`id`)
    15 ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
    16 
    17 -- ----------------------------
    18 -- Records of menu
    19 -- ----------------------------
    20 INSERT INTO `menu` VALUES ('1', null, '首页', null, null, 'closed');
    21 INSERT INTO `menu` VALUES ('2', '1', '系统管理', null, null, 'closed');
    22 INSERT INTO `menu` VALUES ('3', '2', '菜单管理', null, null, 'open');
    23 INSERT INTO `menu` VALUES ('4', '2', '角色管理', null, null, 'open');
    24 INSERT INTO `menu` VALUES ('5', '2', '权限管理', null, null, 'open');
    25 INSERT INTO `menu` VALUES ('6', '2', '用户管理', null, null, 'open');

      Menu.java 

     1 public class Menu implements Serializable {
     2     @Id
     3     @GeneratedValue(strategy = GenerationType.IDENTITY)
     4     private Long id;
     5 
     6     private Long pid;
     7 
     8     private String text;
     9 
    10     private String url;
    11 
    12     @Column(name = "menu_order")
    13     private Short menuOrder;
    14 
    15     private String state;
    16 
    17     private static final long serialVersionUID = 1L;
    18     
    19     // set get
    20 }    

      MenuMapper.java    

    1 public interface MenuMapper extends MyMapper<Menu> {
    2     List<Menu> getMenuByPid(Integer pid);
    3 }

      MenuMapper.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     3 <mapper namespace="com.easyui.dao.MenuMapper">
     4   <resultMap id="BaseResultMap" type="com.easyui.entity.Menu">
     5     <!--
     6       WARNING - @mbg.generated
     7     -->
     8     <id column="id" jdbcType="BIGINT" property="id" />
     9     <result column="pid" jdbcType="BIGINT" property="pid" />
    10     <result column="text" jdbcType="VARCHAR" property="text" />
    11     <result column="url" jdbcType="VARCHAR" property="url" />
    12     <result column="menu_order" jdbcType="SMALLINT" property="menuOrder" />
    13     <result column="state" jdbcType="VARCHAR" property="state" />
    14   </resultMap>
    15 
    16 
    17   <select id="getMenuByPid" resultMap="BaseResultMap">
    18     select id, pid, text, url, menu_order, state
    19     from menu
    20     <where>
    21       <choose>
    22         <when test="_parameter != null and _parameter != ''">
    23           and pid = #{pid}
    24         </when>
    25         <otherwise>
    26           and pid is null
    27         </otherwise>
    28       </choose>
    29 
    30     </where>
    31   </select>
    32 </mapper>

      service 层

     1 public interface MenuService {
     2 
     3     List<Menu> getMenuByPid(Integer pid) throws Exception;
     4 }
     5 
     6 
     7 @Service
     8 public class MenuServiceImpl implements MenuService {
     9     @Autowired
    10     private MenuMapper menuMapper;
    11     @Override
    12     public List<Menu> getMenuByPid(Integer pid) throws Exception {
    13         return menuMapper.getMenuByPid(pid);
    14     }
    15 }

      MenuController.java

     1 @Controller
     2 @RequestMapping("/menu")
     3 public class MenuController {
     4     @Autowired
     5     private MenuService menuService;
     6 
     7     @RequestMapping("/")
     8     public String getMenu(){
     9         return "easyui-tree";
    10     }
    11 
    12     @RequestMapping("/getMenuByPid")
    13     @ResponseBody
    14     public List<Menu> getMenuByPid(@RequestParam(name = "id",required = false) Integer pid){
    15         try {
    16             List<Menu> menus = menuService.getMenuByPid(pid);
    17             System.out.println("success");
    18             return menus;
    19         } catch (Exception e) {
    20             e.printStackTrace();
    21             System.out.println("fail");
    22             return  null;
    23         }
    24     }
    25 }

      页面图

      

        

      

  • 相关阅读:
    栈和队列的存储结构、线性结构和非线性结构
    java 将一个有大量数据的list集合分成指定大小的list集合
    Java和jdbc实现数据库操作的基础例子
    解决连接Oracle 11g报ORA-01034和ORA-27101的错误和报ORA-00119和ORA-00132这个问题
    Java语言类的特性
    Java类与对象
    Java中的字符串(String)
    Java数组
    Java中的流程控制
    Java中的运算符与表达式
  • 原文地址:https://www.cnblogs.com/QullLee/p/8870224.html
Copyright © 2020-2023  润新知