zoukankan      html  css  js  c++  java
  • OA项目17:分配权限

    首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明。谢谢。

    一 写PrivilegeService.java及实现类PrivilegeServiceImpl.java:

    1 package cn.clear.oa.service;
    2 
    3 import cn.clear.oa.base.DaoSupport;
    4 import cn.clear.oa.domain.Privilege;
    5 
    6 public interface PrivilegeService extends DaoSupport<Privilege>{
    7 
    8 }
    PrivilegeService.java
     1 package cn.clear.oa.service.impl;
     2 
     3 import org.springframework.stereotype.Service;
     4 import org.springframework.transaction.annotation.Transactional;
     5 
     6 import cn.clear.oa.base.DaoSupportImpl;
     7 import cn.clear.oa.domain.Privilege;
     8 import cn.clear.oa.service.PrivilegeService;
     9 
    10 @Service
    11 @Transactional
    12 public class PrivilegeServiceImpl extends DaoSupportImpl<Privilege> implements PrivilegeService{
    13 
    14 }
    PrivilegeServiceImpl.java

    二 在BaseAcion.java中将Service注入,以便在Action中可以直接使用:

      @Resource

      protected PrivilegeService privilegeService;

    三 在RoleAction.java中添加属性方法:

      1.增加权限id数组privilegeIds属性和get,set方法,下面要用到:

      private Long[] privilegeIds;

      public Long[] getPrivilegeIds() {

        return privilegeIds;

      }

      public void setPrivilegeIds(Long[] privilegeIds) {

        this.privilegeIds = privilegeIds;

      }

      2.新增设置权限页面和设置权限的action方法,如下:

      /**设置权限页面*/

      public String setPrivilegeUI() throws Exception {

        //准备回显数据

        Role role = roleService.findById(model.getId());

        //将对象的值放在栈顶

        ActionContext.getContext().getValueStack().push(role);

     

        if(role.getPrivileges() != null){

          privilegeIds = new Long[role.getPrivileges().size()];

          int index = 0;

          for (Privilege  privilege : role.getPrivileges()) {

            privilegeIds[index++] = privilege.getId(); 

          }

        }

     

        //准备数据privilegeList

        List<Privilege> privilegeList = privilegeService.findAll();

        ActionContext.getContext().put("privilegeList", privilegeList);

        return "setPrivilegeUI";

      }

      /**设置权限*/

      public String setPrivilege() throws Exception {

        //拿到准备好修改的对象

        Role roles = roleService.findById(model.getId());

        //设置要修改的属性

        List<Privilege> privileges = privilegeService.findByIds(privilegeIds);

     

        roles.setPrivileges(new HashSet<Privilege>(privileges));

        //将对象持久化到数据库

        roleService.update(roles);

        return "toList";

      }

      3.在struts.xml中增加的岗位action映射中增加设置权限的result属性,如下:

      <result name="setPrivilegeUI">/WEB-INF/jsp/roleAction/setPrivilegeUI.jsp</result>

      4.在roleAction的list.jsp页面中修改设置权限的按钮指向地址,如下:

      <s:a action="role_setPrivilegeUI?id=%{id}">设置权限</s:a>

      5.写setPrivilegeUI.jsp页面:  

      
     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
     2 
     3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     4 <html>
     5 <head>
     6 <title>配置权限</title>
     7     <%@ include file="/WEB-INF/jsp/public/commons.jspf" %>
     8     <script language="javascript" src="${pageContext.request.contextPath}/script/jquery_treeview/jquery.treeview.js"></script>
     9     <link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath}/style/blue/file.css" />
    10     <link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath}/script/jquery_treeview/jquery.treeview.css" />
    11 
    12 </head>
    13 <body>
    14 
    15 <!-- 标题显示 -->
    16 <div id="Title_bar">
    17     <div id="Title_bar_Head">
    18         <div id="Title_Head"></div>
    19         <div id="Title"><!--页面标题-->
    20             <img border="0" width="13" height="13" src="${pageContext.request.contextPath}/style/images/title_arrow.gif"/> 配置权限
    21         </div>
    22         <div id="Title_End"></div>
    23     </div>
    24 </div>
    25 
    26 <!--显示表单内容-->
    27 <div id=MainArea>
    28     <s:form action="role_setPrivilege">
    29         <s:hidden name="id"></s:hidden>
    30         <div class="ItemBlock_Title1"><!-- 信息说明 --><div class="ItemBlock_Title1">
    31             <img border="0" width="4" height="7" src="${pageContext.request.contextPath}/style/blue/images/item_point.gif" /> 正在为【${name}】配置权限 </div> 
    32         </div>
    33         
    34         <!-- 表单内容显示 -->
    35         <div class="ItemBlockBorder">
    36             <div class="ItemBlock">
    37                 <table cellpadding="0" cellspacing="0" class="mainForm">
    38                     <!--表头-->
    39                     <thead>
    40                         <tr align="LEFT" valign="MIDDLE" id="TableTitle">
    41                             <td width="300px" style="padding-left: 7px;">
    42                                 <!-- 如果把全选元素的id指定为selectAll,并且有函数selectAll(),就会有错。因为有一种用法:可以直接用id引用元素 -->
    43                                 <input type="CHECKBOX" id="cbSelectAll" onClick="$('[name=privilegeIds]').attr('checked',this.checked)"/>
    44                                 <label for="cbSelectAll">全选</label>
    45                             </td>
    46                         </tr>
    47                     </thead>
    48                    
    49                        <!--显示数据列表-->
    50                     <tbody id="TableData">
    51                         <tr class="TableDetail1">
    52                             <!-- 显示权限树 -->
    53                             <td>
    54                             
    55                             <s:checkboxlist name="privilegeIds" list="#privilegeList" listKey="id" listValue="name"></s:checkboxlist>
    56 
    57                             </td>
    58                         </tr>
    59                     </tbody>
    60                 </table>
    61             </div>
    62         </div>
    63         
    64         <!-- 表单操作 -->
    65         <div id="InputDetailBar">
    66             <input type="image" src="${pageContext.request.contextPath}/style/images/save.png"/>
    67             <a href="javascript:history.go(-1);"><img src="${pageContext.request.contextPath}/style/images/goBack.png"/></a>
    68         </div>
    69     </s:form>
    70 </div>
    71 
    72 <div class="Description">
    73     说明:<br />
    74     1,选中一个权限时:<br />
    75     &nbsp;&nbsp;&nbsp;&nbsp; a,应该选中 他的所有直系上级。<br />
    76     &nbsp;&nbsp;&nbsp;&nbsp; b,应该选中他的所有直系下级。<br />
    77     2,取消选择一个权限时:<br />
    78     &nbsp;&nbsp;&nbsp;&nbsp; a,应该取消选择 他的所有直系下级。<br />
    79     &nbsp;&nbsp;&nbsp;&nbsp; b,如果同级的权限都是未选择状态,就应该取消选中他的直接上级,并递归向上做这个操作。<br />
    80 
    81     3,全选/取消全选。<br />
    82     4,默认选中当前岗位已有的权限。<br />
    83 </div>
    84 
    85 </body>
    86 </html>
    87  
    setPrivilegeUI.jsp

    四 启动服务器,打开岗位管理页面,测试设置权限功能。

  • 相关阅读:
    Cannot allocate memory(1)
    tomcat server.xml配置属性
    HTB-靶机-Nibbles
    HTB-靶机-CrimeStoppers
    HTB-靶机-FluxCapacitor
    HTB-靶机-Bashed
    HTB-靶机-Inception
    HTB-靶机-Fulcrum
    HTB-靶机-Ariekei
    HTB-靶机-Enterprise
  • 原文地址:https://www.cnblogs.com/clear5/p/4063186.html
Copyright © 2011-2022 走看看