2018_03_27 ssm框架+Easyui>dialog>crud

github详细代码存放位置:https://github.com/liujiaxin1314/ssm_demo

要想使用easyui,需要先初始化导入一些基本js文件,如下:

<script type="text/javascript" src="${pageContext.request.contextPath }/jquery/jquery-1.8.3.js"></script>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/easyui/themes/default/easyui.css"/>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/easyui/themes/icon.css"/>
<script type="text/javascript" src="${pageContext.request.contextPath }/easyui/jquery.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/easyui/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/dialog/dialog.js"></script>

注意:导入jquery的js文件一定要放在easyuijs文件的前面,否则会出错

主要代码如下

dialog.jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">


<title>EasyUi>>>>datagrid</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript"
	src="${pageContext.request.contextPath }/jquery/jquery-1.8.3.js"></script>
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath }/easyui/themes/default/easyui.css" />
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath }/easyui/themes/icon.css" />
<script type="text/javascript"
	src="${pageContext.request.contextPath }/easyui/jquery.min.js"></script>
<script type="text/javascript"
	src="${pageContext.request.contextPath }/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript"
	src="${pageContext.request.contextPath }/easyui/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript"
	src="${pageContext.request.contextPath }/js/dialog/dialog.js"></script>
</head>


<body>


	<!-- 用户列表界面 -->
	<table id="dg" title="用户列表" class="easyui-datagrid"
		style="width:550px;height:250px"
		url="${pageContext.request.contextPath }/queryUserList.action"
		toolbar="#toolbar" rownumbers="true" fitColumns="true"
		singleSelect="true">
		<thead>
			<tr>
				<th field="username">用户名字</th>
				<th field="birthday">生日</th>
				<th field="sex">性别</th>
				<th field="address">地址</th>
			</tr>
		</thead>
	</table>
	<div id="toolbar">
		<a class="easyui-linkbutton" iconCls="icon-add" plain="true"
			οnclick="newUser()">添加</a> <a class="easyui-linkbutton"
			iconCls="icon-edit" plain="true" οnclick="editUser()">修改</a> <a
			class="easyui-linkbutton" iconCls="icon-remove" plain="true"
			οnclick="destroyUser()">删除</a>
	</div>


	<!-- 用户新增界面 -->


	<div id="dlg-add" class="easyui-dialog"
		style="width:400px;height:280px;padding:10px 20px" closed="true"
		buttons="#dlg-buttons">
		<div class="ftitle">用户信息页面</div>
		<form id="fm-add" method="post">
			<div class="fitem">
				<label>用户名称:</label> <input name="username"
					class="easyui-validatebox" required="true">
			</div>
			<div class="fitem">
				<label>出生日期:</label> <input name="birthday"
					class="easyui-validatebox">
			</div>
			<div class="fitem">
				<label>用户性别:</label> <input name="sex">
			</div>
			<div class="fitem">
				<label>居住地址:</label> <input name="address"
					class="easyui-validatebox">
			</div>
		</form>
	</div>
	<div id="dlg-buttons">
		<a class="easyui-linkbutton" iconCls="icon-ok" οnclick="saveUser()">保存</a>
		<a class="easyui-linkbutton" iconCls="icon-cancel"
			οnclick="javascript:$('#dlg-add').dialog('close')">取消</a>
	</div>


	<!-- 用户编辑界面 -->


	<div id="dlg-edit" class="easyui-dialog"
		style="width:400px;height:280px;padding:10px 20px" closed="true"
		buttons="#dlg-buttons">
		<div class="ftitle">用户信息页面</div>
		<form id="fm-edit" method="post">
			<div class="fitem">
				<input name="id" type="hidden">
			</div>
			<div class="fitem">
				<label>用户名称:</label> <input name="username"
					class="easyui-validatebox" required="true">
			</div>
			<div class="fitem">
				<label>出生日期:</label> <input name="birthday"
					class="easyui-validatebox" required="true">
			</div>
			<div class="fitem">
				<label>用户性别:</label> <input name="sex">
			</div>
			<div class="fitem">
				<label>居住地址:</label> <input name="address"
					class="easyui-validatebox">
			</div>
		</form>
	</div>
	<div id="dlg-buttons">
		<a class="easyui-linkbutton" iconCls="icon-ok" οnclick="updateUser()">修改</a>
		<a class="easyui-linkbutton" iconCls="icon-cancel"
			οnclick="javascript:$('#dlg-edit').dialog('close')">取消</a>
	</div>


</body>
</html>

dialog.js页面

var curPath=window.document.location.href;  
var pathName=window.document.location.pathname;  
var pos=curPath.indexOf(pathName);  
//获取主机地址,如: http://localhost:8080  
var localhostPaht=window.document.location.href.substring(0,pos); 
//获取带"/"的项目名,如:/ssm_demo
var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); 


//新增用户
function newUser(){
	$('#dlg-add').dialog('open').dialog('setTitle','新增用户');
	$('#fm-add').form('clear');
}


//编辑用户
function editUser(){
	var row = $('#dg').datagrid('getSelected');
//	alert(row.id);
	if (row){
		$('#dlg-edit').dialog('open').dialog('setTitle','编辑用户');
		$('#fm-edit').form('load',row);
	}
}


//保存用户
function saveUser(){
	var url = localhostPaht + projectName + "/saveUser.action";
	$('#fm-add').form('submit',{
		url: url,
		onSubmit: function(){
			return $(this).form('validate');
		},
		success: function(result){
			var result = eval('('+result+')');
			if (result.errorMsg){
				$.messager.show({
					title: 'success',
					msg: result.errorMsg
				});
			} else {
				$('#dlg-add').dialog('close');		// close the dialog
				$('#dg').datagrid('reload');	// reload the user data
			}
		}
	});
}


//修改用户
function updateUser(){
	var url = localhostPaht + projectName + "/updateUser.action";
	$('#fm-edit').form('submit',{
		url: url,
		onSubmit: function(){
			return $(this).form('validate');
		},
		success: function(result){
			var result = eval('('+result+')');
			if (result.errorMsg){
				$.messager.show({
					title: 'success',
					msg: result.errorMsg
				});
			} else {
				$('#dlg-edit').dialog('close');		// close the dialog
				$('#dg').datagrid('reload');	// reload the user data
			}
		}
	});
}


//删除用户
function destroyUser(){
	var row = $('#dg').datagrid('getSelected');
//	var url = localhostPaht + projectName + "/deleteUser.action";
	if (row){
		$.messager.confirm('Confirm','你确定要删除这条信息吗',function(r){
			if (r){
				$.post("deleteUser.action",{id:row.id},function(result){
					if (result.success){
						$('#dg').datagrid('reload');	// reload the user data
					} else {
						$.messager.show({	// show error message
							title: 'Error',
							msg: result.errorMsg
						});
					}
				},'json');
			}
		});
	}
}

UserController代码:

package com.jxliu.ssm.controller;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.jxliu.ssm.pojo.User;
import com.jxliu.ssm.service.UserService;
import com.jxliu.ssm.util.EasyuiResult;
import com.jxliu.ssm.util.JsonResult;
import com.jxliu.ssm.util.JsonUtil;
@Controller
public class UserController {
	@Autowired
	private UserService userService;
	
	@RequestMapping("/queryUserList")
	@ResponseBody
	public String queryUserList(){
		EasyuiResult er = new EasyuiResult();
		List<User> userList = userService.queryUserList();
		int total = userService.queryUserListCount();
		er.setRows(userList);
		er.setTotal(total);
		return JsonUtil.objToJson(er);
	}
	
	@RequestMapping("/saveUser")
	@ResponseBody
	public JsonResult saveUser(User user){
		JsonResult result = new JsonResult();
		userService.saveUser(user);
		return result;
	}
	
	@RequestMapping("/updateUser.action")
	@ResponseBody
	public JsonResult updateUser(User user){
		JsonResult result = new JsonResult();
		userService.updateUser(user);
		return result;
	}
	
	@RequestMapping("/deleteUser.action")
	@ResponseBody
	public JsonResult deleteUser(Integer id){
		JsonResult result = new JsonResult();
		userService.deleteUser(id);
		result.setSuccess(true);
		return result;
	}
}

前端后台变量参数解析:

用户展示功能:


th标签中的field对应后台pojo中对象的属性(不包含主键id的值,至于如何在增删改的时候还可以使用id,后面会写)

对应页面如下:(前台页面中各属性与页面自行对应)



RequestMapping对应url中路径,因为数据展示需要total数据列表的总数,和rows数据列表,所以做了封装EasyuiResult,里面只封装了目前用到的total和rows,因为是展示所有数据,并无任何参数。(注意:在返回前端数据时,easyui框架需要的是json数据,所以通过ResponseBody将后台转换成字符串的数据返回)


用户添加功能:



点击添加后弹出界面

required="true"代表必填

(注意:因为这里没有对日期做出特殊处理,数据库中出生日期是date类型,所以此时填写数据时,应按照规定规格填写,否则会导致异常产生,但是会发现数据库又添加成功,这里涉及到对spring事务控制的理解,spring事务控制的是RunTimeException异常,如果由于数据库中要求的参数规格不达标,这样的异常并不属于java代码中抛出的运行时异常,是属于sql异常,所以此时,事务并不会生效,谨记!!!如果想测试搭好的框架中是否事务生效,在代码中添加 int x = 1/0测试即可)




因为保存的是添加页面中的数据,由于springmvc的映射,直接使用User对象接受即可,但是,这是需要注意的是,表单中并没有主键id的列,在后台接收的时候,User对象中也并没有id主键的值,执行添加操作的时候,主键又不能为null,这里就需要具体问题具体分析,如果主键是uuid形式,在后台手动赋uuid即可,如果主键自增,就需要涉及到mybatis中的标签设置,如下:


useGeneratedKeys="true"代表使用的是主键自增,keyProperty="id"中id就是主键的属性名字,在一个普通的insert标签中添加这两个属性值,就代表在添加这个对象时,自动生成主键id。


用户编辑功能:



点击一条记录,编辑进行修改,表单页面应该与添加表单一样,但是这里涉及到一个问题就是,如果与添加一样,添加操作中,表单中没有id的属性,而修改操作一般都是根据主键id确认修改的对象,所以此时在表单中添加隐藏域hidden属性,隐藏id的值,可是,按照正常的逻辑思维走,点击一条记录,将这条记录的所有信息加载进表单中,再传到后台,这并没有问题,问题是在展示的过程中,业务规定了并不需要展示用户的主键id,在展示用户页面中都没有id主键,那么怎么获取主键id呢?


var row = $('#dg').datagrid('getSelected');获取选中的这条数据记录,而easyui框架内部也进行了封装,通过row.id就可以拿到这条选中数据的主键id



用户删除功能:

用户删除并没有页面,easyui有一个消息弹出框confirm,确认消息的操作


拿到了row.id即主键id的值,直接传递给后台处理即可,并不复杂。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值