2.1. 部署运行pss启动无错
2.1.1. 记得打勾
2.1.2. 修改server.xml
2.2. 修改datagrid.jsp集成easyui
2.2.1. 拷贝原来easyui1 webapp下面的easyui文件夹
2.2.2. 拷贝原来easyui1 webapp下面的common.jsp里面的内容到datagrid.jsp
2.2.3. 先写linkbutton,看有无效果
2.3. 修改execute方法变成分页查询
2.3.1. 原来的代码没有分页
// 专门返回json数据
// 应该是发出一个ajax请求 http://localhost/datagrid_json.action
public String json() throws Exception {
// #map
// 只拿前10条
putContext("map", employeeService.getAll().subList(0, 10));
//
return "json";
}
2.3.2. 今天的代码有分页
@Scope("prototype")
public class DatagridAction extends BaseAction {
private IEmployeeService employeeService;
// 没有提供getter,setter方法
private EmployeeQuery baseQuery = new EmployeeQuery();
// 显示一个页面,不添加数据
// http://localhost/datagrid.action
public String execute() throws Exception {
return SUCCESS;
}
// 专门返回json数据
// 应该是发出一个ajax请求 http://localhost/datagrid_json.action
public String json() throws Exception {
// #map
PageList
putContext("map", pageList);
//
return "json";
}
public EmployeeQuery getBaseQuery() {
return baseQuery;
}
public void setBaseQuery(EmployeeQuery baseQuery) {
this.baseQuery = baseQuery;
}
}
2.4. 处理输出的json数据
http://localhost:8080/datagrid_json.action
2.4.1. 输出多余的数据
2.4.2. 减少json数据输出
如果输出的json数据比较少,提高访问性能
对一些easyui datagrid不需要的属性进行不输出:只需要2个属性total,rows
在Employee标注注解
@JSON(serialize = false)//roles属性json不输出
public Set
return roles;
}
在PageList标注注解
@JSON(serialize = false) 很多属性都不输出
public int getTotalPage()
@JSON(name = "rows") 改名
public List getData() {
@JSON(name = "total") 改名
public int getTotalCount() {
2.4.3. 只输出需要的数据
2.5. 修改datagrid.jsp显示json数据
直接从
http://localhost:8888/demo/main/index.php?plugin=Application&theme=default&dir=ltr&pitem=
2.5.1. 拷贝datagrid的代码替换刚才linkbutton
编号 | 用户名 | 密码 | 年龄 | 头像 | 部门名称 |
---|
2.5.2. 显示效果
2.6. 进行数据格式化-和原来自定义插件写的代码类似
2.6.1. 原来自定义插件代码
2.6.2. 怎样看easyui的文档来处理部门,头像的效果
2.6.3. 今天的代码
function ageFormat(value,row,index) {
// 单元格formatter(格式化器)函数,带3个参数:
// value:字段值。
// row:行记录数据。
// index: 行索引。
// console.debug(value);
// console.debug(row);
// console.debug(index);
return value < 30 ? '' + value + '' : value;
}
2.6.4. 效果
2.7. 处理分页
2.7.1. 分析
json数据中已经输出了总的记录条
第一次提交参数:没有分页条件,默认提交
page 1
rows 10
第二次提交参数,手动改变切换到第二页
page 2
rows 10
2.7.2. 结论
page==baseQuery.currentPage,当前页码
rows=baseQuery.pageSize,一页显示的条数
2.7.3. 修改DatagridAction
添加easyui兼容代码,getter,setter
private int page=1;
private int rows=10;
public String json() throws Exception {
baseQuery.setCurrentPage(page);
baseQuery.setPageSize(rows);
PageList pageList = employeeService.findByQuery(baseQuery);
putContext("map", pageList);
return "jsonResult";// 不能返回页面,只能返回json视图===jsonResult
}
2.8. datagrid组件常用属性
编号 | 用户名 | 密码 | 年龄 | 头像 | 部门名称 |
---|
2.9. 处理datagrid上面工具条
<table toolbar="#toolbar"
不要把下面的div放到table的内部,放到外部
function addEmployee() {
console.debug("add");
}
function editEmployee() {
console.debug("edit");
}
function deleteEmployee() {
console.debug("delete");
}
3.1. 后台
// 从datagrid页面发出的ajax请求:删除方法,单个对象{},集合[{},{}]
public String delete() throws Exception {
Map
try {
employeeService.delete(id);
map.put("success", true);
} catch (Exception e) {
map.put("success", false);
map.put("msg", "异常:" + e.getMessage());
}
putContext("map", map);
return "json";// 不能返回页面,只能返回json视图===json
}
3.2. 前台
function deleteEmployee() {
console.debug("delete");
//调用datagrid组件的getSelected方法当前选中的只是一行
//getSelections none 返回所有被选中的行,当没有记录被选中的时候将返回一个空数组。
//getSelected none 返回第一个被选中的行或如果没有选中的行则返回null。
var row = $('#dg').datagrid('getSelected');
if (!row) {//没有选中
//提示信息
// $.messager.show({
// title : '提示信息',
// msg : '删除前必须选择一行',
// showType : 'fade',
// style : {
// right : '',
// bottom : ''
// }
// });
$.messager.alert('提示信息','删除前必须选择一行!','info');
return;
}
//row代表选中行的json数据
console.debug(row);
$.get("/datagrid_delete.action?id="+row.id,function(data){
if(data.success){//删除成功
//重新加载datagrid:调用datagrid组件的reload方法
//reload param 重载行。等同于'load'方法,但是它将保持在当前页。
$('#dg').datagrid('reload');//类似于原来的$("#domainFrom").submit()
}else{//删除失败
$.messager.alert('错误提示',data.msg,'error');
}
});
}
4.1. 弹出对话框
modal="true" 定义是否将窗体显示为模式化窗口
4.2. 后台
// 从datagrid页面发出的ajax请求:保存方法
public String save() throws Exception {
Map
try {
employeeService.saveOrUpdate(employee);
map.put("success", true);
} catch (Exception e) {
map.put("success", false);
map.put("msg", "异常:" + e.getMessage());
}
putContext("map", map);
return "jsonResult";// 不能返回页面,只能返回json视图===jsonResult
}
// 不需要prepareInput方法,因为不做页面跳转,不做页面回显,前台回显:xxxForm.form('load',rows);
// public void prepareInput() throws Exception {
// }
// java.lang.IllegalArgumentException: attempt to create saveOrUpdate event
// with null entity
// 没有employee = new Employee();
public void prepareSave() throws Exception {
if (id == null) {
employee = new Employee();
} else {
employee = employeeService.get(id);//修改的时候防止数据丢失的
}
}
//显示添加页面
function addEmployee() {
console.debug("add");
//先把对话框里面的表单清空
$('#fm').form('clear');
//弹出一个对话框,修改对话框的标题
$('#dlg').dialog('open').dialog('setTitle','添加员工');
}
4.3. 修改保存
4.3.1. 前台js
//显示回显,修改页面
function editEmployee() {
console.debug("edit");
var row = $('#dg').datagrid('getSelected');
if (!row) {//没有选中
$.messager.alert('提示信息', '修改前必须选择一行!', 'info');
return;
}
//row代表选中行的json数据
console.debug(row);
//先把对话框里面的表单清空
$('#fm').form('clear');
//读取记录填充到表单中。数据参数可以是一个字符串或一个对象类型row,如果是字符串则作为远程URL,否则作为本地记录。
$('#fm').form('load',row);
//弹出一个对话框,修改对话框的标题
$('#dlg').dialog('open').dialog('setTitle','修改员工');
}
4.3.2. 后台action
public void prepareSave() throws Exception {
if (id == null) {// 处理新增
employee = new Employee();// 实例化,把employee放到栈顶
} else {// 处理保存
employee = employeeService.get(id);// 实现数据不丢失
}
}
4.4. easyui内置验证插件
4.4.1. 单独写属性
class="easyui-validatebox" required="true" validType="email"
使用data-options
class="easyui-validatebox" data-options="required:true,validType:'email'"
必填+email格式
4.4.2. 源码分析
$.map(['validatebox','textbox','passwordbox','filebox','searchbox',
'combo','combobox','combogrid','combotree',
'datebox','datetimebox','numberbox',
'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){
if ($.fn[plugin]){
$.fn[plugin].defaults.missingMessage = '该输入项为必输项';
}
});
if ($.fn.validatebox){
$.fn.validatebox.defaults.rules.email.message = '请输入有效的电子邮件地址';
$.fn.validatebox.defaults.rules.url.message = '请输入有效的URL地址';
$.fn.validatebox.defaults.rules.length.message = '输入内容长度必须介于{0}和{1}之间';
$.fn.validatebox.defaults.rules.remote.message = '请修正该字段';
}}
5.1. 效果
5.2. Main2Action
/**
*
* easyui后台主页
*
*/
@Scope("prototype")
public class Main2Action extends BaseAction {
// 显示后台主页
public String execute() throws Exception {
return SUCCESS;
}
}
5.3. struts.xml
5.4. 页面
5.5. 显示左侧菜单
5.5.1. 显示静态菜单
拷贝easyui1项目里面11.组件三要素-事件.jsp案例部分内容
并且拷贝json文本文件:tree.text
5.5.2. 后台
private IMenuService menuService;
// 从后台主页发出ajax请求,获取菜单的json数据
public String menu() throws Exception {
Employee employee = (Employee) ActionContext.getContext().getSession().get(USER_IN_SESSION);
List
手机扫一扫
移动阅读更方便
你可能感兴趣的文章