FunctionAction:
package com.xushuai.bos.web.action;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.xushuai.bos.entity.Function;
import com.xushuai.bos.service.FunctionService;
import com.xushuai.bos.utils.BOSUtils;
@Controller("functionAction")
@Scope("prototype")
public class FunctionAction extends BaseAction<Function> {
@Autowired
@Qualifier("functionService")
private FunctionService functionService;
public void setFunctionService(FunctionService functionService) {
this.functionService = functionService;
}
//接收需要删除的ID值
private String ids;
public String getIds() {
return ids;
}
public void setIds(String ids) {
this.ids = ids;
}
/**
* 异步加载所有父节点
* @return
*/
public String ajaxList(){
//调用service#findAll()
List<Function> list = functionService.findAll();
BOSUtils.writerJson(list, new String[]{"parentFunction","roles"});
return NONE;
}
/**
* 新增功能权限
* @return
*/
public String add(){
//调用service#save(model)
functionService.save(model);
return LIST;
}
/**
* 分页查询功能权限信息
* @return
*/
public String pageQuery(){
/*
* 由于Fcuntion对象和分页参数中的page重名。
* 造成了分页参数无法正常接收,需要手动设置
*/
pageBean.setCurrentPage(Integer.parseInt(model.getPage()));
functionService.pageQuery(pageBean);
BOSUtils.writerJson(pageBean, new String[]{"children","roles","currentPage","pageSize","criteria"});
return NONE;
}
/**
* 删除指定功能权限(可以为多个)
* @return
*/
public String delete(){
String[] strings = ids.split(",");
functionService.delete(strings);
return LIST;
}
/**
* 修改指定的权限信息
* @return
*/
public String edit(){
functionService.edit(model);
return LIST;
}
}
FunctionService、FunctionServiceImpl:
package com.xushuai.bos.service;
import java.util.List;
import com.xushuai.bos.entity.Function;
import com.xushuai.bos.utils.PageBean;
public interface FunctionService {
/**
* 加载所有权限信息
* @return
*/
List<Function> findAll();
/**
* 新增功能权限
* @param model
*/
void save(Function model);
/**
* 分页查询功能权限信息
* @param pageBean
*/
void pageQuery(PageBean pageBean);
/**
* 删除指定功能权限(可以为多个)
* @param strings
*/
void delete(String[] ids);
/**
* 修改指定的权限信息
* @param model
*/
void edit(Function model);
}
package com.xushuai.bos.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.xushuai.bos.dao.FunctionDao;
import com.xushuai.bos.entity.Function;
import com.xushuai.bos.service.FunctionService;
import com.xushuai.bos.utils.PageBean;
@Service("functionService")
@Transactional
public class FunctionServiceImpl implements FunctionService {
@Autowired
@Qualifier("functionDao")
private FunctionDao functionDao;
public void setFunctionDao(FunctionDao functionDao) {
this.functionDao = functionDao;
}
@Override
public List<Function> findAll() {
return functionDao.findAll();
}
@Override
public void save(Function model) {
//健壮性校验
Function parentFunction = model.getParentFunction();
if(parentFunction != null && parentFunction.getId().equals("")){
//如果父功能点ID为空字符串,将其设置为null
model.setParentFunction(null);
}
functionDao.save(model);
}
@Override
public void pageQuery(PageBean pageBean) {
functionDao.findByPage(pageBean);
}
@Override
public void delete(String[] ids) {
Function function = null;
for (String id : ids) {
function = functionDao.findById(id);
if(function != null)
functionDao.delete(function);
}
}
@Override
public void edit(Function model) {
Function _function = functionDao.findById(model.getId());
if(_function != null){
_function.setCode(model.getCode());
_function.setDescription(model.getDescription());
_function.setGeneratemenu(model.getGeneratemenu());
_function.setName(model.getName());
_function.setPage(model.getPage());
_function.setParentFunction(model.getParentFunction());
_function.setZindex(model.getZindex());
//保存修改后的权限对象
functionDao.save(_function);
}
}
}
FunctionDaoImpl(重写方法):
@Override
public List<Function> findAll() {
String hql = "FROM Function f WHERE f.parentFunction IS NULL";
return (List<Function>) this.getHibernateTemplate().find(hql);
}
Struts.xml(新增配置):
<!-- 功能权限管理模块 -->
<action name="FunctionAction_*" class="functionAction" method="{1}">
<result name="list">/WEB-INF/pages/admin/function.jsp</result>
</action>
页面(funciton.jsp、function_add.jsp):
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<!-- 导入jquery核心类库 -->
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/jquery-1.8.3.js"></script>
<!-- 导入easyui类库 -->
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/js/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/js/easyui/themes/icon.css">
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/js/easyui/ext/portal.css">
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/css/default.css">
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/easyui/ext/jquery.portal.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/easyui/ext/jquery.cookie.js"></script>
<script
src="${pageContext.request.contextPath }/js/easyui/locale/easyui-lang-zh_CN.js"
type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$("#grid").datagrid({
toolbar : [
{
id : 'add',
text : '添加权限',
iconCls : 'icon-add',
handler : function(){
location.href='${pageContext.request.contextPath}/page_admin_function_add.action';
}
},
{
id : 'delete',
text : '删除权限',
iconCls : 'icon-cancel',
handler : function(){
var rows = $("#grid").datagrid('getSelections');
if(rows.length == 0){
$.messager.alert('提示信息','请选择您要删除的功能权限','warning');
}else{
$.messager.confirm('提示信息','确定要执行删除操作吗?',function(r){
if(r){
//定义一个数组,存放要删除功能的ID值
Array :arr = new Array();
for(var i = 0; i < rows.length; i++){
//将需要删除的权限ID添加到数组中
arr.push(rows[i].id);
}
//将数组格式化成一个字符串,用逗号分隔每个ID值
var ids = arr.join(",");
location.href = "FunctionAction_delete.action?ids=" + ids;
}
});
}
}
},
{
id : 'clear',
text : '取消选中',
handler : function(){
$("#grid").datagrid('clearSelections');
}
}
],
url : 'FunctionAction_pageQuery.action',
pageList: [15,20,28],
pageSize: 28,
pagination : true,
fit:true,
onDblClickRow : doDblClickRow,
columns : [[
{
field : 'id',
title : '编号',
checkbox:true
},
{
field : 'code',
title : '关键字',
width : 200
},
{
field : 'name',
title : '名称',
width : 200
},
{
field : 'description',
title : '描述',
width : 200,
formatter : function(data,row, index){
if(data==""){
return "无";
}else{
return ""+data;
}
}
},
{
field : 'generatemenu',
title : '是否生成菜单',
width : 100,
formatter : function(data,row, index){
if(data=="1"){
return "生成";
}else{
return "不生成";
}
}
},
{
field : 'zindex',
title : '优先级',
width : 100
},
{
field : 'page',
title : '路径',
width : 250
}
]]
});
// 修改权限窗口
$('#editFunctionWindow').window({
title: '编辑权限',
width: 1000,
modal: true,
shadow: true,
closed: true,
height: 800,
resizable:false
});
//修改按钮绑定事件
$("#edit").click(function(){
alert(1);
var formFlag = $("#editFunctionForm").form('validate');
if(formFlag){
$("#editFunctionForm").submit();
}
})
});
;
//编辑功能权限信息
function doDblClickRow(rowIndex, rowData){
$("#editFunctionWindow").window('open');
$("#editFunctionForm").form('load',rowData);
//回显父功能点
if(rowData.parentFunction.id != null){
$("#parentFunction").combobox('setText',rowData.parentFunction.name);
$("#parentFunction").combobox('setValue',rowData.parentFunction.id);
}
}
</script>
</head>
<body class="easyui-layout">
<div data-options="region:'center'">
<table id="grid"></table>
</div>
<!-- 编辑权限信息 -->
<div class="easyui-window" title="对权限信息进行修改" id="editFunctionWindow"
collapsible="false" minimizable="false" maximizable="false" style="top:20px;left:200px">
<div region="north" style="height:31px;overflow:hidden;" split="false" border="false" >
<div class="datagrid-toolbar">
<a id="edit" icon="icon-edit" href="#" class="easyui-linkbutton" plain="true" >修改</a>
</div>
</div>
<div data-options="region:'center'">
<form id="editFunctionForm" action="FunctionAction_edit.action" method="post">
<input type="hidden" name="id"/>
<table class="table-edit" width="80%" align="center">
<tr class="title">
<td colspan="2">功能权限信息</td>
</tr>
<tr>
<td width="200">关键字</td>
<td>
<input type="text" name="code" class="easyui-validatebox" data-options="required:true" />
</td>
</tr>
<tr>
<td>名称</td>
<td><input type="text" name="name" class="easyui-validatebox" data-options="required:true" /></td>
</tr>
<tr>
<td>访问路径</td>
<td><input type="text" name="page" /></td>
</tr>
<tr>
<td>是否生成菜单</td>
<td>
<select name="generatemenu" class="easyui-combobox">
<option value="0">不生成</option>
<option value="1">生成</option>
</select>
</td>
</tr>
<tr>
<td>优先级</td>
<td>
<input type="text" name="zindex" class="easyui-numberbox" data-options="required:true" />
</td>
</tr>
<tr>
<td>父功能点</td>
<td>
<input id="parentFunction" name="parentFunction.id" class="easyui-combotree" data-options="url:'FunctionAction_ajaxList.action'" style="width:200px"/>
</td>
</tr>
<tr>
<td>描述</td>
<td>
<textarea name="description" rows="4" cols="60"></textarea>
</td>
</tr>
</table>
</form>
</div>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<!-- 导入jquery核心类库 -->
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/jquery-1.8.3.js"></script>
<!-- 导入easyui类库 -->
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/js/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/js/easyui/themes/icon.css">
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/js/easyui/ext/portal.css">
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/css/default.css">
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/easyui/ext/jquery.portal.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/easyui/ext/jquery.cookie.js"></script>
<script
src="${pageContext.request.contextPath }/js/easyui/locale/easyui-lang-zh_CN.js"
type="text/javascript"></script>
<script type="text/javascript">
$(function(){
// 点击保存
$('#save').click(function(){
var formFlag = $("#functionForm").form('validate');
if(formFlag){
$("#functionForm").submit();
}
});
});
</script>
</head>
<body class="easyui-layout">
<div data-options="region:'north'">
<div class="datagrid-toolbar">
<a id="save" icon="icon-save" href="#" class="easyui-linkbutton" plain="true" >保存</a>
</div>
</div>
<div data-options="region:'center'">
<form id="functionForm" action="FunctionAction_add.action" method="post">
<table class="table-edit" width="80%" align="center">
<tr class="title">
<td colspan="2">功能权限信息</td>
</tr>
<tr>
<td width="200">关键字</td>
<td>
<input type="text" name="code" class="easyui-validatebox" data-options="required:true" />
</td>
</tr>
<tr>
<td>名称</td>
<td><input type="text" name="name" class="easyui-validatebox" data-options="required:true" /></td>
</tr>
<tr>
<td>访问路径</td>
<td><input type="text" name="page" /></td>
</tr>
<tr>
<td>是否生成菜单</td>
<td>
<select name="generatemenu" class="easyui-combobox">
<option value="0">不生成</option>
<option value="1">生成</option>
</select>
</td>
</tr>
<tr>
<td>优先级</td>
<td>
<input type="text" name="zindex" class="easyui-numberbox" data-options="required:true" />
</td>
</tr>
<tr>
<td>父功能点</td>
<td>
<input name="parentFunction.id" class="easyui-combotree" data-options="url:'FunctionAction_ajaxList.action'" style="width:200px"/>
</td>
</tr>
<tr>
<td>描述</td>
<td>
<textarea name="description" rows="4" cols="60"></textarea>
</td>
</tr>
</table>
</form>
</div>
</body>
</html>