Direncanakan untuk menambahkan fungsi konfigurasi izin ke proyek open source, dan berencana untuk menambahkan Ztree untuk mengimplementasikan struktur pohon.
Tautan Proyek Open Source Github Tim: https://github.com/u014427391/jeepatform menyambut bintang (koleksi)
Ztree adalah "plug-in pohon" multi-fungsional yang diimplementasikan oleh jQuery. Kinerja yang sangat baik, konfigurasi yang fleksibel, dan kombinasi beberapa fungsi adalah keunggulan terbesar Ztree.
Ztree Unduh Tautan: http://www.treej.cn/v3/main.php#_ztreeinfo
Kelas Entitas Informasi Peran:
Paket org.muses.jeepatform.core.entity.admin; impor javax.persistence.*; impor java.io.serializable; import java.util.hashset; impor java.util.set;/*** @Dription Informasi Peran Entity Kelas* @Author Nicky* @date March; 2017*/@table (name = "sys_role")@EntityPublic Class Role Implementsable {/** ID peran **/private int roleIDID; / ** Deskripsi Peran **/ Private String Roledesc; / ** Nama peran **/ private string rolename; / ** Bendera Peran **/ Peran String Pribadi; set pribadi <mission> izin = hashset baru <mission> (); @ID @GeneratedValue (strategi = generasi. } 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; } //Modify the cascade policy to cascade relationship @OneToMany(targetEntity=Permission.class,cascade=CascadeType.MERGE,fetch=FetchType.EAGER) @JoinTable(name="sys_role_permission", joinColumns=@JoinColumn(name="roleId",referencedColumnName="roleId"), InversejoIncolumns =@Joincolumn (name = "ImisionId", ReferencedColumnName = "id", unik = true)) set publik <izin> getPermissions () {izin pengembalian; } setPerMissions public void (set <pmission> izin) {this.permissions = izin; } @Override public boolean sama (objek obj) {if (instance dari peran) {peran peran = (peran) obj; kembalikan this.roleId == (role.getRoleId ()) && this.rolename.equals (role.getroleName ()) && this.roledesc.equals (role.getroledesc ()) && this.role.equals (role.getrole ()); } return super.equals (obj); }}Kelas Entitas Informasi Izin:
Paket org.muses.jeepatform.core.entity.admin; impor java.io.serializable; impor java.util.hashset; impor java.util.set; impor javax.persistence.cascadetype; impor javax.persistence.columnum; impor javax.pers.pers.perencypers. javax.persistence.generatedValue; impor javax.persistence.generationType; impor javax.persistence.id; impor javax.persistence.joincolumn; impor javax.persistence.jointable; impor javax.persistence.manytoman; impor javax.persisteer ;persoon; Moymanytoman; impor javax.persisterperson ;persone; macanytoman; impor javax.persisterperson ;persone; javax.persistence.table;/*** @description Vo Class untuk operasi izin* @Author Nicky* @Date 6 Maret 2017*/ @Table (name = "sys_permission") @EntityPublic Izin Kelas Public Serializable {private int id; Private String PDESC; nama string pribadi; private static final long serialversionuid = 1L; menu menu pribadi; Private Set <Operation> Operations = HashSet baru <Operation> (); izin publik () {super (); } @GeneratedValue (strategy = generasi. } 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 (name string) {this.name = name; } @OnetoOne (targetEntity = menu.class, cascade = cascadetype.refresh, fetch = fetchType.eager) @joincolumn (name = "menuID", referencedColumnName = "menuid") menu publik getMenu () {return menu; } public void setMenu (menu menu) {this.menu = menu; } @Manytomany (targetEntity = operasi.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<Operation> getOperations() { return operations; } setOperations public void (set <Operation> operasi) {this.operations = Operations; }}Menerapkan kelas Entitas Informasi Menu, menggunakan JPA untuk mengimplementasikannya
Paket org.muses.jeepatform.core.entity.admin; import javax.persistence.*; impor java.io.serializable; Import java.util.list;/*** @Description menu entitas* @Author nicky* @date 17 Maret 2017*/ @name = "name =" Sy ") @MENTOC @) @Date 17 Maret 2017*/ @name =" name = "name =" Syse ")) SYS) @MENTHOC @MARET, 2017*/ @name =" name = "name =" Sy ") @MENTHOC) @MARET" 2017*/ @name = "Sy")) { / ** ID menu ** / private int menuID; / ** ID superior **/ private int parentid; / ** Nama Menu **/ Private String Menuname; / ** Ikon Menu **/ Private String Menuicon; / ** URL Menu **/ Private String MenuUrl; / ** Jenis Menu **/ Private String Menutype; / ** Menu Sort **/ Private String Menuorder; / ** Status Menu **/ Private String Menustatus; Daftar Pribadi <u menu> submenu; target string pribadi; private boolean hassubmenu = false; menu publik () {super (); } @Id @GeneratedValue (strategi = generasi. } 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 Daftar Publik <u menu> getsubmenu () {return submenu; } public void setSubmenu (Daftar <Su- menu> submenu) {this.submenu = submenu; } public void setarget (string target) {this.target = target; } @Transient string publik getTarget () {return target; } public void setHassubmenu (boolean hassubmenu) {this.hassubmenu = hassubmenu; } @Transient publik boolean gethassubmenu () {return hassubmenu; }}Menerapkan antarmuka jParepository
Paket org.muses.jeepatform.core.dao.repository.admin; impor org.muses.jeepatform.core.entity.admin.role; impor org.springframework.data.jpa.repository.jparepository;/** ** ** di 2017.7/repository.jparepository;/** ** ** On 2017.7/repository.jparepository;/** ** ** On 2017. */antarmuka publik Rolerepository memperluas jParepository <role, integer> {}Menerapkan antarmuka jParepository
Paket org.muses.jeepatform.core.dao.repository.admin; impor org.muses.jeepatform.core.entity.admin.menu; impor org.springframework.data.jpa.repository.jparepository;/** yang dibuat oleh nick. */Antarmuka Publik MenutReRepository memperluas jParepository <menu, integer> {}Kelas Layanan Peran:
Paket org.muses.jeepatform.service; import com.google.common.collect.lists; impor org.muses.jeepatform.core.dao.repository.admin.rolepageRepository; impor org.muses.jeepatform.core.entity.admin; org.springframework.beans.factory.annotation.Autowired; impor org.springframework.data.domain.pagerequest; nick -nikramwork.springframework.data.domain. */ @ServicePublic Class RolePageService {@Autowired rolePageRepository RolerEpository; / ** * Bangun Objek PageRequest * @param num * @param size * @param asc * @param string * @return */ private pagerequest buildpageRequest (int num, int ukuran, sort.direction asc, string string) {return new pageRequest (num-1, size, null, string); } /** * Get all menu information and display it on pages* @param pageNo * Current number of pages* @param pageSize * Number of pages per page* @return */ public Page<Role> findAll(int pageNo, int pageSize, Sort.Direction dir, String str){ PageRequest pageRequest = buildPageRequest(pageNo, pageSize, dir, str); Halaman <lance> peran = rolerepository.findall (pagerequest); peran pengembalian; } Daftar Publik <Embol> findAllRole () {iterable <lance> peran = rolerepository.findall (); Daftar <Elance> myList = lists.newarraylist (peran); return mylist; } / ** * Temukan informasi peran berdasarkan ID peran * @param roleId * @return * / Peran publik FindByRoleId (String RoleID) {return rolerEpository.findOne (integer.parseint (roleId)); } / *** Simpan informasi peran* @param Peran* / public void doSave (peran peran) {rolerepository.save (peran); }}Kelas Layanan Menu:
Paket org.muses.jeepplatform.service; impor org.muses.jeepplatform.annotation.rediscache; impor org.muses.jeepplatform.common.rediscachenamespace; import org.muses.jeepplatform.core.dao.repository. org.muses.jeepplatform.core.entity.admin.menu; impor org.springframework.beans.factory.annotation.Autowired; impor org.springframework pada 2017/6/17. */ @ServicePublic menutreeservice {@Autowired menutreerepository menutreerepository; /*** query semua menu* @return*/@transactional // @rediscache Daftar publik <u menu> findAll () {return menutreerepository.findall (); }}Di kelas pengontrol, gunakan ID peran untuk mendapatkan menu yang bisa dilihat peran:
/** * Lompat ke halaman otorisasi peran * @param roleId * @param model * @return */@RequestMapping (value = "/goauthorise") Public String goauth (@RequestParam String RoleID, model model) {List <u menu> menulist = menutreeservice.findall (); Peran peran = roleservice.findbyroleid (roleID); Set <smission> haspermissions = null; if (role! = null) {hasPerMissions = role.getpermissions (); } untuk (menu m: menulist) {for (izin 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 ("menu", json); mengembalikan "admin/peran/role_auth"; }Di ujung depan, tampilan menu pohon direalisasikan melalui Ztree, dan kemudian otorisasi peran diimplementasikan dengan memeriksa:
<%@ page contentType = "Teks/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+"/";%> <! Doctype html> <html lang = "zh-cn"> <head> <base href = "<%= basepath =" zh-cn "> <head> <base href =" <%= BasePath " /> <meta http-equiv = "x-ua-kompatibel" content = "ie = edge"> <meta name = "viewport" content = "width = device-width, skala awal = 1"> <Title> Sisipkan judul di sini </title> <!-Memperkenalkan pustaka jQuery start-<script type = "Text/Javascript" src = "$ {Basepath} static/js/jQuery-1.8.3.js"> </skrip> <!-Memperkenalkan jQuery Library end-> <script type = "text/javaScript" src = "<%= BasePath%> Plugins/Zdialog/Zdialog.js"> </script> BasEpath%> "Zdialog/Zdialog.js"> </script> skrip> "JAVEC/JAVAS/JAVAS/JAVAS/JAVAS/JAVAS/JAVAS/JAVAS/JAVAS/JAVAS/SCHOPE/JAVAS/JAVAS/JAVAS/JAVAS/JAVAS/JAVAS/JAVAS/JAVAS/JAVAS/JAVAS/JAVAS/JAVAS/JAVAS/JAVAS = src = "<%= Basepath%> plugin/zdialog/zdrag.js"> </script> <script type = "text/javascript" src = "<%= Basepath%> plugin/zdialog/zdrag.js"> </script> <script type = "Teks/JavaScript" src = "<%= Basepath%> plugin/zdialog/zprogress.js"> </script> <tautan rel = "stylesheet" href = "<%= Basepath%> plugin/ztree/3.5/ztreestyle.css" rel = "JAVE NOFOW over ikut" src="<%=basePath%>plugins/zTree/3.5/jquery-1.4.4.min.js"></script> <script type="text/javascript" src="<%=basePath%>plugins/zTree/3.5/jquery.ztree.core.js"></script> <script type="text/javascript" src = "<%= BasePath%> plugin/ztree/3.5/jquery.ztree.excheck.js"> </script> <script type = "text/javascript"> <!- var pengaturan = {check: {enable: true}, data: {simpledata: {enable: true {{{true}, {{{{{{{{{{{{{{{true {{true {{{{true {{{{true {{true {{true {{true {{{{true { /*[{ID: 1, PID: 0, Nama: "Periksa 1 at will", buka: true}, {id: 11, pid: 1, nama: "Periksa 1-1 pada will", buka: true}, {id: 12, pid: 1, nama: "Periksa 1-2 at will", buka: true}];*/ var json = $ {menu {menu {menum var znodes = eval (json); kode var; fungsi setCheck () {var ztree = $ .fn.ztree.getztreeobj ("treedemo"), py = $ ("#py"). attr ("checked")? "p": "", sy = $ ("#sy"). attr ("checked")? "s": "", pn = $ ("#pn"). attr ("checked")? "p": "", sn = $ ("#sn"). attr ("checked")? "s": "", type = {"y": py + sy, "n": pn + sn}; ztree.setting.check.chkboxtype = type; showCode ('pengaturan.check.chkbloxtype = {"y": "' + type.y + '", "n": "' + type.n + '"};'); } function showcode (str) {if (! code) code = $ ("#code"); code.empty (); code.append ("<li>"+str+"</li>"); } $ (dokumen) .ready (function () {$ .fn.ztree.init ($ ("#treedemo"), pengaturan, znodes); setcheck (); $ ("#py"). Bind ("ubah", setcheck); $ ("#sy"). Bind ("Change", setcheck); $ ("#sn"). bind ("ubah", setCheck); //-> function dialogclose () {parentDialog.close (); } function doSave () {var ztree = $ .fn.ztree.getztreeobj ("treedemo"); var node = ztree.getCheckedNodes (); var tmpnode; var ids = ""; untuk (var i = 0; i <nodes.length; i ++) {tmpnode = node [i]; if (i! = node.length-1) {ids += tmpnode.id +","; } else {ids += tmpnode.id; }} var roleId = $ {roleId}; var params = roleId +";" +id; Peringatan (IDS); $ .AJAX ({type: "POST", URL: 'ROLE/OUTHERISE.DO', data: {params: params, tm: new date (). gettime ()}, dataPePe: 'json', cache: false, success: function (data) {if ("success" == data.result) {warner ('warner; dodialogclose (); } </script> </head> <body> <div> <div> <ul id = "treedemo"> </ul> </div> </div> <input type = "tombol" ontClick = "doSave ()" value = "save"/<input onclick = "dialogclose ();" type = "tombol" value = "tutup"/> </body> </html>Tautan Proyek Open Source Github Tim: https://github.com/u014427391/jeepatform
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.