edatagrid扩展组件详解

 edatagrid组件是datagrid的扩展组件,增加了统一处理CRUD的功能,可以用在数据比较简单的页面。使用的时候需要额外引入jquery.edatagrid.js为了能够把后台自动捕获的异常显示到前台这里必须使用最新版本的jquery.edatagrid.js文件

能够直接在数据表格里面进行CRUD

列表

新增

修改

删除

删除异常

项目图片

AjaxResult.java,改变输出属性适应edatagrid.onError方法

package com.jege.spring.boot.json;/*** 返回json对象*/
public class AjaxResult {private static final String OK = "ok";private static final String ERROR = "error";private boolean isError = false;private String msg = OK;public AjaxResult success() {return this;}public AjaxResult failure() {isError = true;msg = ERROR;return this;}public AjaxResult failure(String message) {isError = true;msg = message;return this;}public boolean getIsError() {return isError;}public void setIsError(boolean isError) {this.isError = isError;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}}

CommonExceptionAdvice.jave,修改了返回的http状态

package com.jege.spring.boot.exception;import java.util.Set;import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.validation.ValidationException;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.http.HttpStatus;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.validation.BindException;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.HttpMediaTypeNotSupportedException;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;import com.jege.spring.boot.json.AjaxResult;/*** 全局异常处理*/
@ControllerAdvice
@ResponseBody
public class CommonExceptionAdvice {private static Logger logger = LoggerFactory.getLogger(CommonExceptionAdvice.class);/*** 400 - Bad Request*/@ResponseStatus(HttpStatus.BAD_REQUEST)@ExceptionHandler(MissingServletRequestParameterException.class)public AjaxResult handleMissingServletRequestParameterException(MissingServletRequestParameterException e) {logger.error("缺少请求参数", e);return new AjaxResult().failure("required_parameter_is_not_present");}/*** 400 - Bad Request*/@ResponseStatus(HttpStatus.BAD_REQUEST)@ExceptionHandler(HttpMessageNotReadableException.class)public AjaxResult handleHttpMessageNotReadableException(HttpMessageNotReadableException e) {logger.error("参数解析失败", e);return new AjaxResult().failure("could_not_read_json");}/*** 400 - Bad Request*/@ResponseStatus(HttpStatus.BAD_REQUEST)@ExceptionHandler(MethodArgumentNotValidException.class)public AjaxResult handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {logger.error("参数验证失败", e);BindingResult result = e.getBindingResult();FieldError error = result.getFieldError();String field = error.getField();String code = error.getDefaultMessage();String message = String.format("%s:%s", field, code);return new AjaxResult().failure(message);}/*** 400 - Bad Request*/@ResponseStatus(HttpStatus.BAD_REQUEST)@ExceptionHandler(BindException.class)public AjaxResult handleBindException(BindException e) {logger.error("参数绑定失败", e);BindingResult result = e.getBindingResult();FieldError error = result.getFieldError();String field = error.getField();String code = error.getDefaultMessage();String message = String.format("%s:%s", field, code);return new AjaxResult().failure(message);}/*** 400 - Bad Request*/@ResponseStatus(HttpStatus.BAD_REQUEST)@ExceptionHandler(ConstraintViolationException.class)public AjaxResult handleServiceException(ConstraintViolationException e) {logger.error("参数验证失败", e);Set<ConstraintViolation<?>> violations = e.getConstraintViolations();ConstraintViolation<?> violation = violations.iterator().next();String message = violation.getMessage();return new AjaxResult().failure("parameter:" + message);}/*** 400 - Bad Request*/@ResponseStatus(HttpStatus.BAD_REQUEST)@ExceptionHandler(ValidationException.class)public AjaxResult handleValidationException(ValidationException e) {logger.error("参数验证失败", e);return new AjaxResult().failure("validation_exception");}/*** 405 - Method Not Allowed*/@ResponseStatus(HttpStatus.METHOD_NOT_ALLOWED)@ExceptionHandler(HttpRequestMethodNotSupportedException.class)public AjaxResult handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {logger.error("不支持当前请求方法", e);return new AjaxResult().failure("request_method_not_supported");}/*** 415 - Unsupported Media Type*/@ResponseStatus(HttpStatus.UNSUPPORTED_MEDIA_TYPE)@ExceptionHandler(HttpMediaTypeNotSupportedException.class)public AjaxResult handleHttpMediaTypeNotSupportedException(Exception e) {logger.error("不支持当前媒体类型", e);return new AjaxResult().failure("content_type_not_supported");}/*** 500 - Internal Server Error*/@ResponseStatus(HttpStatus.OK)@ExceptionHandler(ServiceException.class)public AjaxResult handleServiceException(ServiceException e) {logger.error("业务逻辑异常", e);return new AjaxResult().failure("业务逻辑异常:" + e.getMessage());}/*** 500 - Internal Server Error*/@ResponseStatus(HttpStatus.OK)@ExceptionHandler(Exception.class)public AjaxResult handleException(Exception e) {logger.error("通用异常", e);return new AjaxResult().failure("通用异常:" + e.getMessage());}/*** 操作数据库出现异常:名称重复,外键关联*/@ResponseStatus(HttpStatus.OK)@ExceptionHandler(DataIntegrityViolationException.class)public AjaxResult handleException(DataIntegrityViolationException e) {logger.error("操作数据库出现异常:", e);return new AjaxResult().failure("操作数据库出现异常:字段重复、有外键关联等");}
}

user.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>用户管理</title>
<%@include file="/WEB-INF/page/common.jsp"%>
<!-- 额外添加的jquery.edatagrid.js -->
<script type="text/javascript" src="${ctx}/static/easyui/jquery.edatagrid.js"></script>
<script type="text/javascript">// 页面加载完毕之后才能写jQuery的代码$(function() {$('#userDatagrid').edatagrid({url : '/user/json',saveUrl : '/user/save',updateUrl : '/user/save',destroyUrl : '/user/delete',onError : function(index, data) {$.messager.alert('错误提示', data.msg, 'error');}});});
</script>
</head>
<body><!-- 数据表格组件 --><table id="userDatagrid" title="用户管理" fit="true" border="false" fitColumns="true" singleSelect="true"pagination="true" rownumbers="true" toolbar="#userDatagridToolbar"data-options="onSave:function(){$('#userDatagrid').edatagrid('reload');},destroyMsg:{norecord:{// 在没有记录选择的时候执行title:'警告',msg:'没有选择要删除的行!!!'},confirm:{// 在选择一行的时候执行      title:'确定',msg:'你真的要删除吗?'}}"><thead><tr><th data-options="field:'id',hidden:true">编号</th><th field="name" width="50" sortable="true" editor="{type:'validatebox',options:{required:true}}">名称</th><th field="age" width="50" sortable="true"editor="{type:'numberbox',options:{required:true,min:20,max:80,precision:0}}">年龄</th></tr></thead></table><!-- 数据表格组件工具栏 --><div class="easyui-layout" fit="true"><div id="userDatagridToolbar" region="north" border="false"style="border-bottom: 1px solid #ddd; height: 32px; padding: 2px 5px; background: #fafafa;"><div style="float: left;"><a href="javascript:;" onclick="javascript:$('#userDatagrid').edatagrid('addRow')"class="easyui-linkbutton c1" iconCls="icon-add">添加</a> <a href="javascript:;"onclick="javascript:$('#userDatagrid').edatagrid('saveRow')" class="easyui-linkbutton c2"iconCls="icon-save">保存</a> <a href="javascript:;"onclick="javascript:$('#userDatagrid').edatagrid('destroyRow')" class="easyui-linkbutton c3"iconCls="icon-remove">删除</a> <a href="javascript:;"onclick="javascript:$('#userDatagrid').edatagrid('cancelRow')" class="easyui-linkbutton c4"iconCls="icon-cancel">取消</a><a href="javascript:;"onclick="javascript:$('#userDatagrid').edatagrid('reload')" class="easyui-linkbutton c5"iconCls="icon-reload">刷新</a></div><div style="float: right"><form method="post">关键字:<input name="q" size="10" /> <a href="javascript:;"onclick="javascript:$('#userDatagrid').edatagrid('load', {q : $('input[name=q]').val()});"class="easyui-linkbutton c5" iconCls="icon-search">搜索</a></form></div></div></div>
</body>
</html>

如果感觉不错的话记得给我点赞哟!!!

Spring Boot EasyUI edatagrid 扩展相关推荐

  1. 如何使用消息队列,Spring Boot和Kubernetes扩展微服务

    by Daniele Polencic 由Daniele Polencic 如何使用消息队列,Spring Boot和Kubernetes扩展微服务 (How to scale Microservic ...

  2. Spring Boot中如何扩展XML请求和响应的支持

    在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式 ...

  3. Spring Boot EasyUI datagrid

    jQueryEasyUI详解 jQuery EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面. 开发者 ...

  4. Spring Boot + Vue前后端分离(一)前端Vue环境搭建

    你好,[程序职场]专注于:Spring Boot ,微服务 和 前端APP开发,闲暇之余一起聊聊职场规划,个人成长,还能带你一起探索 副业赚钱渠道,在提升技术的同时我们一起交流 敏捷流程 提高工作效率 ...

  5. Spring Boot整合 Sentry 监控项目日志

    作者: lxchinesszz 来源:SpringForAll社区 Sentry Java版使用简介 基本概念 Sentry是什么? Sentry 是一个开源的实时错误报告工具,支持 web 前后端. ...

  6. Spring Boot 最核心的 3 个注解详解

    最近面试一些 Java 开发者,他们其中有些在公司实际用过 Spring Boot, 有些是自己兴趣爱好在业余自己学习过. 然而,当我问他们 Spring Boot 最核心的 3 个注解是什么,令我失 ...

  7. Spring Boot 管理 MVC

    一.Spring MVC 自动配置 Spring Boot 为 Spring MVC 应用提供了自动配置.主要包括视图解析器.静态资源处理.类型转化器与格式化器.HTTP 消息转换器.静态主页的支持等 ...

  8. 盘点Spring Boot最核心的27个注解

    Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务框架SpringClo ...

  9. 超级详细的Spring Boot 注解总结

    日常编程中我相信大家肯定都用过spring,也用过spring的注解,哪怕面试的时候也经常会被问到一些spring和spring boot注解的作用和含义等,那么这篇就带大家来看看超级详细的Sprin ...

最新文章

  1. 解决Button在IE6、7下的自适应宽度问题
  2. 数据管理的3种方法,看完后感叹:数字化转型、数据中台真不难
  3. windows录屏_电脑自带录屏软件怎么打开?详细操作教程
  4. 计算机算法设计与分析 循环赛日程表
  5. matlab 编程——一些细节、常犯错误的汇总
  6. python对称加密算法库_对称加密算法
  7. html中ul和li是什么单位,html中ul,ol和li的区别
  8. keil中 使用for循环体中条件判断框定义变量出错
  9. 量子计算机的算力是多少,量子计算机算力有多强?可能是无数平行宇宙中的计算机在同时计算...
  10. 在迪士尼打工,不快乐吗?
  11. 软件测试工程师市场需求量是多少,带你探索软件测试工程师月薪是多少
  12. bcd转ascii码 流程图_BCD码转换成ASCII值
  13. SQLite+python
  14. 十分钟文档化你的C++代码——DoxyGen
  15. Ubuntu18.04 实现串口通信
  16. table表格五星好评的实现
  17. 2017阿里校招内推面试回忆
  18. idea生成__jb_old__文件无法删除
  19. 美国FBI招聘测试题
  20. 工业品牌软文营销拒绝知识的禁锢需掌握这7种写作方法

热门文章

  1. jeecg 查看 页面 父子表 横向滚动条效果 官方被禁用
  2. bazel 链接_bazel-链接第三方动态库,静态库。
  3. 日期格式化时注解@DateTimeFormat无效的问题分析
  4. 用IDEA debug按键功能
  5. jqueryd登录异步请求 java,ajaxd的js和jquery实现
  6. word把选择答案弄到题目里_word中把选择题的正确答案自动填到括号里技巧
  7. Web应用安全————Shiro 解决会话固定漏洞
  8. Linux进阶之路————Linux概述
  9. qq传输文件的软件测试点,超强新功能 QQ传文件夹测试版抢先试用
  10. python hashlib_python hashlib模块及md5() 、sha()