Es ist geplant, Open -Source -Projekten für die Konfigurationsfunktionen für Berechtigte hinzuzufügen, und plant, Ztree zur Implementierung einer Baumstruktur hinzuzufügen.
Das Github Open Source -Projektlink des Teams: https://github.com/u014427391/jeepatform begrüßt Star (Sammlung)
Ztree ist ein multifunktionales "Baumplug-In", das von JQuery implementiert wird. Hervorragende Leistung, flexible Konfiguration und eine Kombination mehrerer Funktionen sind die größten Vorteile von Ztree.
Ztree -Download -Link: http://www.treejs.cn/v3/main.php#_ztreeinfo
Rolleninformationsentität Klasse:
Paket org.muses.jeepatform.core.entity.admin; import Javax.Persistence.*; Import Java.io.Serializable; 2017*/@table (name = "sys_role")@EntityPublic Class Rolle implementiert serialisierbare {/** Rollen -ID **/private int rolId; / ** Rollenbeschreibung **/ privat String roledesc; / ** Rollenname **/ privat String rolename; / ** Rollenflagge **/ private String -Rolle; private set <berechtigung> Berechtigungen = new Hashset <genehmigung> (); @ID @generatedValue (Strategy = GenerationType.Identity) public int getRolEd () {return rolId; } public void setROLEID (int rollen) {this.rolId = rollen; } @Column (Länge = 100) public String getRoledesc () {return roledesc; } public void setroledesc (String roledesc) {this.roledesc = roledesc; } @Column (Länge = 100) public String getRolename () {return rolename; } public void setRolename (String rolename) {this.rolename = rolename; } @Column (Länge = 100) public String getRole () {return rollen; } public void setRole (String -Rolle) {this.role = Rolle; } // Die Cascade -Richtlinie modifizieren Sie die kaskade relation @onetomany (targetEntity = tätig.class, Cascade = Cascadetype.Merge, Fetch = fetCtType.eagern) @jointable (name = "sys_role_permission", joincolumns = @joincolumn (name = "rollen", ",", ",", ",", "," Rollen ",", ",", ",", ",", ",", "Rollen", Inversejoincolumns =@joincolumn (name = "promissionID", referenzColumnname = "id", einzigartig = true)) public set <genehmigung> getPermissions () {Rückgabeberechtigungen; } public void setPermissions (SET <REIRMENTION> Berechtigungen) {this.Permissions = Berechtigungen; } @Override public boolean Equals (Object obj) {if (obj instanceof rolle) {rollenrolle = (rolle) obj; return this.roleId == (rollen.getRolEd ()) && this.rolename.equals (rollen.getrolename ()) && this.roledesc.equals (rollen.getroledesc ()) && this.role.equals (rollen.getrole (); } return super.equals (obj); }}Berechtigungsinformationsentität Klasse:
paket org.muses.jeepatform.core.entity.admin; import Java.io.Serializable; Import Java.util.hashset; Javax.Persistence.generatedValue; Import Javax.Persistence.generationType; Import Javax.Persistence.Id; Import Javax.Persistence.Joincolumn; wichtige Javax.Persistence.jointable; javax.persistence.table;/*** @Description VO -Klasse für Berechtigungsoperation* @Author Nicky* @date 6. März 2017*/ @table (name = "sys_permission") @EntityPublic Class Erlaubnis implementiert seriellisierbar {private int id; private String pdesc; privater Zeichenfolge Name; private statische endgültige lange Serialversionuid = 1L; privates Menü; private set <Operation> operations = new Hashset <Operation> (); öffentliche Erlaubnis () {Super (); } @GeneratedValue (Strategy = GenerationType.Identity) @ID public int getId () {return this.id; } public void setId (int id) {this.id = id; } @Column (Länge = 100) public String getPdesc () {return this.pdesc; } public void setpdesc (String pDesc) {this.pdesc = pdesc; } @Column (Länge = 100) public String getName () {return this.name; } public void setName (String -Name) {this.name = name; } @OnetoOne (targetEntity = mseu.class, Cascade = Cascadetype.refresh, fetch = fetchtype.eager) @JoIncolumn (name = "mseuId", ReferenzColumnname = "MenuId") öffentliches Menü getMenu () {Rückgabemenü; } public void setMenu (Menümenü) {this.menu = Menü; } @Manytomany (targetEntity = operation.class, Cascade = Cascadetype.Merge, Fetch = FetCetType.eager) @Jointable (name = "sys_permission_operation", joincolumns =@joincolumn (name = "ewigmingId", referenzcolumnname = "id"), InverseJoincolumns =@joincolumn (name = "operationId", referenziertColumnname = "id")). } public void setoperations (set <Operation> operations) {this.operations = operations; }}Implementieren Sie die Menüinformationsentitätsklasse mit JPA, um sie zu implementieren
Paket org.Muses.jeepatform.core.entity.admin; import Javax.Persistence. / ** Menü -ID ** / private int mseuId; / ** überlegene ID **/ private int parentId; / ** Menüname **/ privat String Menuname; / ** Menüsymbol **/ privat String -Menüicon; / ** Menü -URL **/ privat String -Menüurl; / ** Menüentyp **/ privat String mennutype; / ** Menü Sortier **/ privater String -MenüOrder; / ** Menüstatus **/ privat String menustatus; Private List <Meens> Untermenü; privates Zeichenfolgenziel; privat boolean hassubmenu = false; öffentliches Menü () {Super (); } @Id @generatedValue (Strategy = GenerationType.Identity) public int getMenuid () {return this.Menuid; } public void setMenuId (intmenü) {this.Menuid = mseuId; } @Column (Länge = 100) public int getParentID () {return pentId; } public void setParentID (int parentId) {this.parentID = parentId; } @Column (Länge = 100) public String getMeName () {return this.Menuname; } public void setMenuname (String Menuname) {this.Menuname = Menuname; } @Column (Länge = 30) public String getMenuicon () {return this.menuicon; } public void setMenuicon (String -Menüicon) {this.Menuicon = Menüicon; } @Column (Länge = 100) public String getMenuurl () {return this.Menuurl; } public void setMenuurl (String mseuRl) {this.Menuurl = Menüurl; } @Column (Länge = 100) public String getMenutype () {return this.menutype; } public void setMenutype (String mENUType) {this.Menutype = Menutype; } @Column (Länge = 10) public String getMenuorder () {return mseuorder; } public void setMenuorder (String -MenüOrder) {this.Menuorder = MenüOrder; } @Column (Länge = 10) public String getMenustatus () {return menustatus; } public void setMenustatus (String menustatus) {this.Menustatus = Menustatus; } @Transient public List <Meens> getUbMenu () {return submenu; } public void setSubMenu (list <emuse> 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; }}Implementieren Sie die JarePository -Schnittstelle
Paket org.musses.jeepatform.core.dao.repository.admin; import org.muses.jeepatform.core.entity.admin.role; */public interface rolerepository erweitert JParepository <rolle, Integer> {}Implementieren Sie die JarePository -Schnittstelle
Paket org.musses.jeepatform.core.dao.repository.admin; import org.muses.jeepatform.core.entity.admin.menu; */Public Interface MenutreerePository erweitert JParepository <Menü, Integer> {}Rollendienstklasse:
Paket org.Muses.jeepatform.service; import com.google.common.collect.lists; import org.muses.jeepatform.core.dao.repository.admin.rolepagerepository; import org.muses.jeepatform.core.admin.role; org.springframework.beans.factory.annotation.autowired; import org.springframework.data.domain.pageRequest; import org.springframework.data.domain.Sort; */ @ServicePublic class rolePageService {@autowired rolepageRePository rolerepository; / ** * erstellen pageRequest-Objekt * @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, Größe, Null, String); } / *** Alle Menüinformationen abrufen und auf Seiten anzeigen* @param pageno* Aktuelle Anzahl der Seiten* @param pageSize* Anzahl der Seiten pro Seite* @return* / public page> findall (int pageno, int pagessize, sortieren. Page <rolle> Rollen = rolerepository.findall (pageRequest); Return -Rollen; } public list <Rolle> findAllRole () {iterable <rolle> rollen = rolerepository.findall (); List <Rolle> myList = lists.NewarrayList (Rollen); MyList zurückgeben; } / ** * Rolleninformationen basierend auf Rollen -ID * @Param rollen * @return * / public rollen findByRolId (String RolEID) {return rolerepository.findone (Integer.ParseInt (Rollen)); } / *** Rolleninformationen speichern* @param rolle* / public void dosave (rollenrolle) {rolerepository.save (Rolle); }}Menüdienstklasse:
Paket org.muses.jeepplatform.service; import org.muses.jeepplatform.annotation org.Muses.jeepplatform.core.entity.admin.menu; import org.springframework.bean.factory.Annotation.autowired; 2017/6/17. */ @ServicePublic Class Menutreeservice {@autowired MenutreePository Menutreerepository; /*** alle Menüs abfragen* @return*/@transactional // @rediscache publiclist <emuse> findAll () {return MenutreePository.findall (); }}Verwenden Sie in der Controller -Klasse die Rollen -ID, um das Menü zu erhalten, das die Rolle anzeigen kann:
/** * Seite zur Rollenautorisierung springen * @param rollen * @param modell * @return */@RequestMapping (value = "/goauthorise") public String Goauth (@RequestParam String rollen, Modellmodell) {LIST <MEU> MENULIST = MENUTREESIVICE.FINDALL (); Rolle Rolle = RoleService.Findbyroleid (RollenID); Set <generlaubnis> HaSpermissions = NULL; if (rollen! } für (Menü m: Menulist) {für (Erlaubnis P: HaSpermissions) {if (p.getMenu (). getMenuid () == M.GetMenuid ()) {m.sethassubMenu (true); }}} model.addAttribute ("RollenID", RollenID); JsonArray jsonArray = jsonArray.fromObject (Menulist); String json = jsonArray.toString (); JSON = JSON.REPLACEALL ("Menuid", "ID"). Ersatz ("ParentID", "PID"). Ersatz ("Menuname", "Name"). Ersatz ("Hassubmenu", "geprüft"); model.addattribute ("Menüs", JSON); return "admin/rollen/rollen_auth"; }Im vorderen Ende wird das Baummenü durch ZTREE realisiert, und dann wird die Rollengenehmigung durch Überprüfung implementiert:
<%@ page contentType = "text/html; charset = utf-8" pageCoding = "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%" charset = "utf-8"/> <meta http-äquiv = "x-ua-kompatible" content = "ie = edge"> <meta name = "viewPort" content = "width = Gerätebreite, initial-scale = 1"> <title> citle hier </title> <! src = "$ {basepath} static/js/jQuery-1.8.3.js"> </script> <!-Einführung von JQuery Library End-> <script type = "text/javaScript" src = "<%= Basepath%> plugins/zdialog/zdialog.js"> </script> </scribhin type = "text/javascrict"> </script> </script> </scribht ’</script> </scribht’ </script> </script> </scribhin | Src = "<%= Basepath%> Plugins/ZDialog/Zdrag.js"> </script> <script type = "text/javaScript" src = "<%= Basepath%> Plugins/Zdialog/Zdrag.js"> </script> <script type = "text/javascript" " src = "<%= Basepath%> Plugins/ZDialog/Zprogress.js"> </script> <link rel = "styleSheet" href = "<%= Basepath%> Plugins/ZTree/3.5/Ztreestyle.css" rel = "external nowlow" type "text/csStyp"> < 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%>plugins/zTree/3.5/jquery.ztree.excheck.js"></script> <script type="text/javascript"> <!-- var setting = { check: { enable: true }, data: { simpleData: { enable: true } }, callback:{ onClick: { } } }; /*[{ID: 1, PID: 0, Name: "Überprüfen Sie 1 at Will", öffnen: true}, {id: 11, pid: 1, name: "prüche 1-1 nach Will", öffnen: true}, {id: 12, pid: 1, name: "prüche 1-2 at Will", öffnen: true}; var znodes = eval (JSON); var Code; Funktion setCheck () {var ztree = $ .fn.ztree.getZtreeobj ("Treedemo"), py = $ ("#py"). attr ("geprüft")? "P": "", Sy = $ ("#sy"). Attr ("geprüft")? "S": "", pn = $ ("#pn"). attr ("geprüft")? "P": "", sn = $ ("#sn"). Attr ("geprüft")? "S": "", type = {"y": py + sy, "n": pn + sn}; Ztree.Setting.Check.chkBoxType = Typ; showCode ('setting.check.chkBoxType = {"y": "' + type.y + '", "n": "' + type.n + '"};'); } function showcode (str) {if (! code) code = $ ("#code"); Code.Empty (); code.Append ("<li>"+str+"</li>"); } $ (document) .ready (function () {$ .fn.ztree.init ($ ("#treedemo"), Setting, Znodes); setCheck (); $ ("#py"). Bind ("Change", SetCheck); $ ("#sy"). $ ("#sn"). Bind ("Change", setcheck); //-> Funktion DialogClose () {parentDialog.close (); } function dosave () {var ztree = $ .fn.ztree.getZtreeObj ("Treedemo"); var nodes = ztree.getCheckednodes (); var tmpnode; var ids = ""; für (var i = 0; i <nodes.length; i ++) {tmpnode = nodes [i]; if (i! = nodes.length-1) {ids += tmpnode.id +","; } else {ids += tmpnode.id; }} var rolId = $ {rollen}; var params = rollenId +";" +ids; Alarm (IDS); $ .ajax ({type: "post", url: 'rollen/authorise.do', data: {params: params, tm: new Date (). DodialogCLOSE (); } </script> </head> <body> <div> <div> <ul id = "treedemo"> </ul> </div> </div> <Eingabe type = "button" onclick = "dosave ()" value = "save"/> <Eingabe onclick = "DialogClose ();" type = "button" value = "close"/> </body> </html>Das GitHub Open Source -Projektlink des Teams: https://github.com/U014427391/jeepatform
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.