老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)

SpringMVC+ZTree如何實現(xiàn)樹形菜單權(quán)限配置

小編給大家分享一下SpringMVC+ZTree如何實現(xiàn)樹形菜單權(quán)限配置,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)主營肥東網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app開發(fā),肥東h5重慶小程序開發(fā)搭建,肥東網(wǎng)站營銷推廣歡迎肥東等地區(qū)企業(yè)咨詢

計劃在開源項目里加入權(quán)限配置的功能,打算加入zTree實現(xiàn)樹形結(jié)構(gòu)。

Team的Github開源項目鏈接:https://github.com/u014427391/jeeplatform歡迎star(收藏)

zTree 是一個依靠 jQuery 實現(xiàn)的多功能 “樹插件”。優(yōu)異的性能、靈活的配置、多種功能的組合是 zTree 最大優(yōu)點。

zTree下載鏈接:http://www.treejs.cn/v3/main.php#_zTreeInfo

SpringMVC+ZTree如何實現(xiàn)樹形菜單權(quán)限配置 

角色信息實體類:

package org.muses.jeeplatform.core.entity.admin;
import javax.persistence.*;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
/**
 * @description 角色信息實體類
 * @author Nicky
 * @date 2017年3月16日
 */
@Table(name="sys_role")
@Entity
public class Role implements Serializable{
  /** 角色Id**/
  private int roleId;
  /** 角色描述**/
  private String roleDesc;
  /** 角色名稱**/
  private String roleName;
  /** 角色標(biāo)志**/
  private String role;
  private Set permissions = new HashSet();

  @Id
  @GeneratedValue(strategy=GenerationType.IDENTITY)
  public int getRoleId() {
    return roleId;
  }

  public void setRoleId(int roleId) {
    this.roleId = roleId;
  }

  @Column(length=100)
  public String getRoleDesc() {
    return roleDesc;
  }

  public void setRoleDesc(String roleDesc) {
    this.roleDesc = roleDesc;
  }

  @Column(length=100)
  public String getRoleName() {
    return roleName;
  }

  public void setRoleName(String roleName) {
    this.roleName = roleName;
  }

  @Column(length=100)
  public String getRole() {
    return role;
  }

  public void setRole(String role) {
    this.role = role;
  }
  //修改cascade策略為級聯(lián)關(guān)系
  @OneToMany(targetEntity=Permission.class,cascade=CascadeType.MERGE,fetch=FetchType.EAGER)
  @JoinTable(name="sys_role_permission", joinColumns=@JoinColumn(name="roleId",referencedColumnName="roleId"), inverseJoinColumns=@JoinColumn(name="permissionId",referencedColumnName="id",unique=true))
  public Set getPermissions() {
    return permissions;
  }

  public void setPermissions(Set permissions) {
    this.permissions = permissions;
  }

  @Override
  public boolean equals(Object obj) {
    if (obj instanceof Role) {
      Role role = (Role) obj;
      return this.roleId==(role.getRoleId())
          && this.roleName.equals(role.getRoleName())
          && this.roleDesc.equals(role.getRoleDesc())
          && this.role.equals(role.getRole());
    }
    return super.equals(obj);
  }
}

權(quán)限信息實體類:

package org.muses.jeeplatform.core.entity.admin;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
/**
 * @description 權(quán)限操作的Vo類
 * @author Nicky
 * @date 2017年3月6日
 */
@Table(name="sys_permission")
@Entity
public class Permission implements Serializable {
  private int id;
  private String pdesc;
  private String name;
  private static final long serialVersionUID = 1L;
  private Menu menu;
  private Set operations = new HashSet();
  public Permission() {
    super();
  }

  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Id
  public int getId() {
    return this.id;
  }

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

  @Column(length=100)
  public String getPdesc() {
    return this.pdesc;
  }

  public void setPdesc(String pdesc) {
    this.pdesc = pdesc;
  }

  @Column(length=100)
  public String getName() {
    return this.name;
  }

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

  @OneToOne(targetEntity=Menu.class,cascade=CascadeType.REFRESH,fetch=FetchType.EAGER)
  @JoinColumn(name="menuId",referencedColumnName="menuId")
  public Menu getMenu() {
    return menu;
  }

  public void setMenu(Menu menu) {
    this.menu = menu;
  }

  @ManyToMany(targetEntity=Operation.class,cascade=CascadeType.MERGE,fetch=FetchType.EAGER)
  @JoinTable(name="sys_permission_operation",joinColumns=@JoinColumn(name="permissionId",referencedColumnName="id"),inverseJoinColumns=@JoinColumn(name="operationId",referencedColumnName="id"))
  public Set getOperations() {
    return operations;
  }

  public void setOperations(Set operations) {
    this.operations = operations;
  }
}

實現(xiàn)菜單信息實體類,用JPA來實現(xiàn)

package org.muses.jeeplatform.core.entity.admin;
import javax.persistence.*;
import java.io.Serializable;
import java.util.List;
/**
 * @description 菜單信息實體
 * @author Nicky
 * @date 2017年3月17日
 */
@Table(name="sys_menu")
@Entity
public class Menu implements Serializable {
  /** 菜單Id**/
  private int menuId;  
  /** 上級Id**/
  private int parentId;  
  /** 菜單名稱**/
  private String menuName;  
  /** 菜單圖標(biāo)**/
  private String menuIcon;  
  /** 菜單URL**/
  private String menuUrl;  
  /** 菜單類型**/
  private String menuType;
  /** 菜單排序**/
  private String menuOrder;
  /**菜單狀態(tài)**/
  private String menuStatus;
  private List subMenu;
  private String target;
  private boolean hasSubMenu = false;
  public Menu() {
    super();
  }  
  
  @Id
  @GeneratedValue(strategy=GenerationType.IDENTITY)
  public int getMenuId() {
    return this.menuId;
  }

  public void setMenuId(int menuId) {
    this.menuId = menuId;
  }

  @Column(length=100)
  public int getParentId() {
    return parentId;
  }

  public void setParentId(int parentId) {
    this.parentId = parentId;
  }

  @Column(length=100)
  public String getMenuName() {
    return this.menuName;
  }

  public void setMenuName(String menuName) {
    this.menuName = menuName;
  }  
  
  @Column(length=30)
  public String getMenuIcon() {
    return this.menuIcon;
  }

  public void setMenuIcon(String menuIcon) {
    this.menuIcon = menuIcon;
  }  
  
  @Column(length=100)
  public String getMenuUrl() {
    return this.menuUrl;
  }

  public void setMenuUrl(String menuUrl) {
    this.menuUrl = menuUrl;
  }  
  
  @Column(length=100)
  public String getMenuType() {
    return this.menuType;
  }

  public void setMenuType(String menuType) {
    this.menuType = menuType;
  }

  @Column(length=10)
  public String getMenuOrder() {
    return menuOrder;
  }

  public void setMenuOrder(String menuOrder) {
    this.menuOrder = menuOrder;
  }

  @Column(length=10)
  public String getMenuStatus(){
    return menuStatus;
  }

  public void setMenuStatus(String menuStatus){
    this.menuStatus = menuStatus;
  }

  @Transient
  public List getSubMenu() {
    return subMenu;
  }

  public void setSubMenu(List subMenu) {
    this.subMenu = subMenu;
  }

  public void setTarget(String target){
    this.target = target;
  }

  @Transient
  public String getTarget(){
    return target;
  }

  public void setHasSubMenu(boolean hasSubMenu){
    this.hasSubMenu = hasSubMenu;
  }

  @Transient
  public boolean getHasSubMenu(){
    return hasSubMenu;
  }

}

實現(xiàn)JpaRepository接口

package org.muses.jeeplatform.core.dao.repository.admin;
import org.muses.jeeplatform.core.entity.admin.Role;
import org.springframework.data.jpa.repository.JpaRepository;
/**
 * Created by Nicky on 2017/12/2.
 */
public interface RoleRepository extends JpaRepository {

}

實現(xiàn)JpaRepository接口

package org.muses.jeeplatform.core.dao.repository.admin;
import org.muses.jeeplatform.core.entity.admin.Menu;
import org.springframework.data.jpa.repository.JpaRepository;
/**
 * Created by Nicky on 2017/6/17.
 */
public interface MenuTreeRepository extends JpaRepository{

}

角色Service類:

package org.muses.jeeplatform.service;
import com.google.common.collect.Lists;
import org.muses.jeeplatform.core.dao.repository.admin.RolePageRepository;
import org.muses.jeeplatform.core.entity.admin.Role;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * Created by Nicky on 2017/7/30.
 */
@Service
public class RolePageService {
  @Autowired
  RolePageRepository roleRepository;

  /**
   * 構(gòu)建PageRequest對象
   * @param num
   * @param size
   * @param asc
   * @param string
   * @return
   */
  private PageRequest buildPageRequest(int num, int size, Sort.Direction asc,
                     String string) {
    return new PageRequest(num-1, size,null,string);
  }

  /**
   * 獲取所有的菜單信息并分頁顯示
   * @param pageNo
   *     當(dāng)前頁面數(shù)
   * @param pageSize
   *     每一頁面的頁數(shù)
   * @return
   */
  public Page findAll(int pageNo, int pageSize, Sort.Direction dir, String str){
    PageRequest pageRequest = buildPageRequest(pageNo, pageSize, dir, str);
    Page roles = roleRepository.findAll(pageRequest);
    return roles;
  }

  public List findAllRole(){
    Iterable roles = roleRepository.findAll();
    List myList = Lists.newArrayList(roles);
    return myList;
  }

  /**
   * 根據(jù)角色id查找角色信息
   * @param roleId
   * @return
   */
  public Role findByRoleId(String roleId){
    return roleRepository.findOne(Integer.parseInt(roleId));
  }

  /**
   * 保存角色信息
   * @param role
   */
  public void doSave(Role role){
    roleRepository.save(role);
  }
}

菜單Service類:

package org.muses.jeeplatform.service;
import org.muses.jeeplatform.annotation.redisCache;
import org.muses.jeeplatform.common.RedisCacheNamespace;
import org.muses.jeeplatform.core.dao.repository.admin.MenuTreeRepository;
import org.muses.jeeplatform.core.entity.admin.Menu;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
 * Created by Nicky on 2017/6/17.
 */
@Service
public class MenuTreeService {

  @Autowired
  MenuTreeRepository menuTreeRepository;

  /**
   * 查詢所有的菜單
   * @return
   */
  @Transactional
  //@RedisCache
  public List findAll(){
    return menuTreeRepository.findAll();
  }
}

在Controller類里通過角色id獲取該角色可以查看的菜單:

/**
   * 跳轉(zhuǎn)到角色授權(quán)頁面
   * @param roleId
   * @param model
   * @return
   */
  @RequestMapping(value = "/goAuthorise" )
  public String goAuth(@RequestParam String roleId, Model model){
    List menuList = menuTreeService.findAll();
    Role role = roleService.findByRoleId(roleId);
    Set hasPermissions = null;
    if(role != null){
      hasPermissions = role.getPermissions();
    }
    for (Menu m : menuList) {
      for(Permission p : hasPermissions){
        if(p.getMenu().getMenuId()==m.getMenuId()){
          m.setHasSubMenu(true);
        }
      }
    }
    model.addAttribute("roleId" , roleId);
    JSONArray jsonArray = JSONArray.fromObject(menuList);
    String json = jsonArray.toString();
    json = json.replaceAll("menuId","id").replaceAll("parentId","pId").
        replaceAll("menuName","name").replaceAll("hasSubMenu","checked");
    model.addAttribute("menus",json);
    return "admin/role/role_auth";
  }

在前端通過zTree實現(xiàn)樹形菜單展示,通過勾選然后實現(xiàn)角色授權(quán):

<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%
  String path = request.getContextPath();
  String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



  " rel="external nofollow" >
  
  
  
  Insert title here
  
  
  
  
  
  
  plugins/zTree/3.5/zTreeStyle.css" rel="external nofollow" type="text/css">
  
  
  
  
    

    function dialogClose()
    {
      parentDialog.close();
    }

    function doSave() {
      var zTree = $.fn.zTree.getZTreeObj("treeDemo");
      var nodes = zTree.getCheckedNodes();
      var tmpNode;
      var ids = "";
      for(var i=0; i



  
    
  
  

SpringMVC+ZTree如何實現(xiàn)樹形菜單權(quán)限配置 

以上是“SpringMVC+ZTree如何實現(xiàn)樹形菜單權(quán)限配置”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


分享文章:SpringMVC+ZTree如何實現(xiàn)樹形菜單權(quán)限配置
文章來源:http://www.xueling.net.cn/article/jcpcds.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 亚洲片在线观看 | yy6080午夜八戒国产亚洲 | 国产精品一区二区av在线观看 | 94欧美setu| 国产最顶级的黄色片在线免费观看 | 亚洲一线视频 | 中文字幕在线观看日 | 性高湖久久久久久久久aaaaa | 亚洲欧美色视频 | 久草加勒比 | 成人综合婷婷国产精品久久蜜臀 | 久久三级视频 | 麻豆乱码国产一区二区三区的优势 | 亚洲精品无码久久久久AV老牛 | 国产精彩视频在线观看 | 国产麻豆剧果冻传媒一区 | 欧美性久久久久久 | 国产精品hd | 国产免费拔擦拔擦8x高清在线人 | 68精品国产免费久久久久久婷婷 | 国产性一交一乱一伦一色一情 | 深夜福利123红桃视频 | 精品韩国三级在线观看视频 | xxxx亚洲| 在线观看日本精品 | 51妺嘿嘿午夜福利 | 日韩av一级片 | 我要看一级黄色毛片 | 麻豆91在线视频 | 成年黄页网站大全免费 | 亚洲狠狠色丁香婷婷综合 | 无码免费中文字幕视频 | 性饥渴艳妇性色生活片在线播放 | 精品伦一区二区三区免费视频 | 亚洲中文字幕无线无码毛片 | 国产丰满农村老妇女乱 | 成人免费黄色网页 | 色女人天堂 | 欧美激情精品久久久久久大尺度 | 91一区在线 | 亚洲欧美另类久久久精品2019 |