前几天心血来潮用jquery-easyui+spring、struts2、hibernate实现了一个系统的一小部分功能,下面给大家分享一下。
【图一:登录页】

【图二:页面布局】

【图三:用户编辑层】

【图四:确认弹出框】

easyui插件简介在这就不赘述了,大家可以在iteye上找到很多该插件的相关消息。
如果页面需要使用easyui插件,需要引进一下js和css(使用的时候需要注意easyui版本依赖的jquery.js版本要对应):
<script type="text/javascript" src="<%=root%>/Web/common/js/jquery-1.4.4.min.js"></script>
<link rel="stylesheet" type="text/css" href="<%=root%>/Web/common/js/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="<%=root%>/Web/common/js/easyui/themes/icon.css">
<script type="text/javascript" src="<%=root%>/Web/common/js/easyui/js/jquery.easyui.min.js"></script>
<script type="text/javascript" src="<%=root%>/Web/common/js/easyui/js/easyui-lang-zh_CN.js"></script>
为了让一个主页实现上下左右中的布局方式显示,这里就需要用到easyui一个叫layout的东西,通常有多种方式可以实现布局。
①使用js创建layout
首先定义一个div,设置region,title等属性(注html是没有region属性的,这是easyui专属属性)
<div id="cc" style="width:600px;height:400px;">
<div region="north" title="North Title" split="true" style="height:100px;"></div>
<div region="south" title="South Title" split="true" style="height:100px;"></div>
<div region="east" iconCls="icon-reload" title="East" split="true" style="width:100px;"></div>
<div region="west" split="true" title="West" style="width:100px;"></div>
<div region="center" title="center title" style="padding:5px;background:#eee;"></div>
</div>
然后在js中指定id为cc的div为layout:
$('#cc').layout(options);
简单介绍几个layout属性:
属性名 |
数据类型 |
功能 |
默认值 |
title |
string |
指定布局的标题名称 |
无 |
region |
string |
指定布局位置,分:东、西、南、北、中 |
|
border |
boolean |
是否显示边界 |
true |
split |
boolean |
是否显示分界线从而用户可以拖动改变其大小 |
false |
iconCls |
string |
指定布局的图标样式 |
无 |
href |
string |
指定该布局远程调用的html路径 |
无 |
②让整个body使用easyui的cssclass:class="easyui-layout"自动创建layout
这也是我使用的方式,看下面代码:
<body class="easyui-layout">
<!-- 正上方panel -->
<div region="north" style="height:100px;padding:10px;" href="<%=root%>/Web/common/page/top.html"></div>
<!-- 正左边panel -->
<div region="west" title="菜单栏" split="true" style="width:280px;padding1:1px;overflow:hidden;">
<div class="easyui-accordion" fit="true" border="false">
<!-- selected -->
<div title="用户权限管理" selected="true">
<ul>
<li><a href="javascript:addTab('tabId_loginInfo','用户管理','<%=root%>/ospm/loginInfo/goLoginInfoMain.jhtml');">用户管理</a></li>
<li><a href="javascript:addTab('tabId_privilege','权限管理','<%=root%>/ospm/loginInfo/goPrivilegeMain.jhtml');">权限管理</a></li>
</ul>
</div>
</div>
</div>
<!-- 正中间panel -->
<div region="center" title="功能区" >
<div class="easyui-tabs" id="centerTab" fit="true" border="false">
<div title="欢迎页" style="padding:20px;overflow:hidden;">
<div style="margin-top:20px;">
<h3>你好,欢迎来到权限管理系统</h3>
</div>
</div>
</div>
</div>
<!-- 正下方panel -->
<div region="south" style="height:50px;" align="center">
<label>
作者:白糖<br/>
时间:2011-5-17
</label>
</div>
</body>
运行效果如【图二:页面布局】
【图二:页面布局】上面标记了在菜单栏点击“用户管理”链接即可在功能区创建一个叫“用户管理”的选项卡并加载相应数据。注意:用户管理页面是另一个jsp,需要远程调用。
最初我使用tabs的href属性来远程调用用户管理jsp,发现页面会有js冲突,导致用户管理页面的添加、编辑等各种功能失效,我猜想可能是js冲突,因为布局页引用了easyui,而用户管理jsp也引用了同样的easyui。
后来看了下项目经理ext的布局代码,原来在点击链接的时候会创建一个tabs,只是tabs的内容是一个iframe分隔:
/**
* 创建新选项卡
* @param tabId 选项卡id
* @param title 选项卡标题
* @param url 选项卡远程调用路径
*/
function addTab(tabId,title,url){
//如果当前id的tab不存在则创建一个tab
if($("#"+tabId).html()==null){
var name = 'iframe_'+tabId;
$('#centerTab').tabs('add',{
title: title,
closable:true,
cache : false,
//注:使用iframe即可防止同一个页面出现js和css冲突的问题
content : '<iframe name="'+name+'"id="'+tabId+'"src="'+url+'" width="100%" height="100%" frameborder="0" scrolling="auto" ></iframe>'
});
}
}
不过群里也有些大神提醒:如果大量使用iframe会使页面性能降低,所以使用iframe分隔tabs只适合小型项目使用。
easyui datagrid是争议最大的一个功能插件,很多人说它不开源,提供的api不全面,标题列内容可能不对齐,操作繁杂等等。其实个人觉得这个table的功能已经相当不错了,如果只需要做基本的显示则只需配很少的代码。
下面简单介绍下datagrid的使用:
①首先肯定需要有一个table标签,给它定义一个id,在js中通过id.datagrid方法即可创建表格
<table id="tt"></table>
$('#tt').datagrid(options);
②创建表格的列名有两种方式:第一种是直接在table标签中定义,第二种是在js中定义:
我使用的是第一种方式:
<!-- 表格 -->
<table id="loginInfoTable"
title="用户信息一览"
border="0"
cellspacing="0"
cellpadding="0"
iconCls="icon-edit"
width="98%"
idField="loginId"
pagination="true"
remoteSort="false"
singleSelect="false"
showFooter="false"
striped="true"
url="<%=root%>/ospm/loginInfo/doLoginInfoSearch.jhtml">
<thead>
<tr align="center">
<th field="ck" width="20" checkbox="true" width="20"></th>
<th field="loginCode" width="200">用户名</th>
<th field="statuValue" width="100">状态</th>
<th field="opt" formatter='optFormater' width="150">操作</th>
</tr>
</thead>
</table>
第二种方式如下:
columns:[[
{field:'itemid',title:'Item ID',rowspan:2,width:80,sortable:true},
{field:'productid',title:'Product ID',rowspan:2,width:80,sortable:true},
{title:'Item Details',colspan:4}
],[
{field:'listprice',title:'List Price',width:80,align:'right',sortable:true},
{field:'unitcost',title:'Unit Cost',width:80,align:'right',sortable:true},
{field:'attr1',title:'Attribute',width:100},
{field:'status',title:'Status',width:60}
]]
③向后台请求数据
datagrid有一个属性叫url,在进入页面后,它会通过ajax方式向后台发送请求,后台封装相应数据(JSON格式)再返回给前台即可显示。注意:datagrid在回调函数中必须获得两项json数据:total表示查询出的总结过,rows表示显示在table中的数据集合。
/**
* 封装Json数据
*/
long total = 0; // 符合查询的总条数
List<LoginInfoTableDto> lstTable = null; // 查询结果
total = (Long) mapLoginInfo.get(Constant4Ospm.TOTAL);
if (mapLoginInfo.get(Constant4Ospm.SEARCH_RESULT) != null) {
lstTable = (List<LoginInfoTableDto>) mapLoginInfo
.get(Constant4Ospm.SEARCH_RESULT);
} else {
//注:如果从数据库查询不出数据,也必须封装一个空的json集合,不然页面就会报js错误
lstTable = new ArrayList<LoginInfoTableDto>();
}
JSONObject datas = new JSONObject();
// 设置总共有多少条记录
datas.put(Constant4Ospm.TOTAL, total);
// 设置当前页的数据
datas.put(Constant4Ospm.PAGE_SIZE, lstTable);
④后台数据与表格关联
后台过来的数据怎么与表格每一列对应呢?其实很简单:后台rows中包含了名叫LoginInfoTableDto的javabean-json集合,datagrid的field和idField对应LoginInfoTableDto中的一个属性(大体上是这样,当然field也可以不对应javabean的属性,你可以进行一些转换)。
⑤toolbar工具栏
【图二:页面布局】能够看到datagrid有“添加新用户”、“批量删除”等工具栏,这些工具栏的实现方式也很简单:
$('#loginInfoTable').datagrid({
toolbar:[{//正上方工具栏
text:'添加新用户',
iconCls:'icon-add',
handler:function(){
//点击工具栏运行的js方法
openDialog_add();
}
},'-',{
text:'批量删除',
iconCls:'icon-cancel',
handler:function(){
batch('delete');
}
...............
当然easyui datagrid还有很多其它的功能,网上有很多大神已经详细介绍过,这里就不赘述了。
对话框的使用也很简单:你只需要定义一个带id的div,在div中填入你需要在对话框中显示的内容,然后调用一下方法即可变成easyui的dialog:
<div id="dd" title="My Dialog" style="width:400px;height:200px;">
Dialog Content.
</div>
$('#dd').dialog(options);
前面【图三:用户编辑层】就是一个dialog,大家看下代码:
jsp页面:
<!-- 编辑 -->
<div id="loginInfoEdit" icon="icon-save"
style="padding: 5px; width: 500px; height: 300px;">
<h5 id="loginInfoEdit_message" style="color: red;"></h5>
<div class="ToolTip_Form" id="table_loginInfoEdit" onkeydown="if(event.keyCode==13){loginInfoEdit();}">
<input type="hidden" id="loginInfoEdit_loginId"></input>
<ul>
<li>
<label>用户名:</label>
<label id="loginInfoEdit_loginCode"></label>
</li>
<li>
<label>密码:</label>
<input type="password" class="easyui-validatebox" id="loginInfoEdit_password" maxlength="20" required="true"></input>
</li>
<li>
<label>重复密码:</label>
<input type="password" class="easyui-validatebox" id="loginInfoEdit_repassword" maxlength="20" required="true"></input>
</li>
<li>
<a href="#" class="easyui-linkbutton" icon="icon-ok" onclick="loginInfoEdit();">提交</a>
</li>
</ul>
</div>
</div>
js代码:
//设置弹出框的属性
function setDialog_edit(){
$('#loginInfoEdit').dialog({
title : '用户编辑',
modal: true, //模式窗口:窗口背景不可操作
collapsible : true, //可折叠,点击窗口右上角折叠图标将内容折叠起来
resizable : true //可拖动边框大小
});
}
//打开对话框
function openDialog_edit(loginId,loginCode){
loginInfoEditReset(loginId,loginCode);
$('#loginInfoEdit').dialog('open');
}
//关闭对话框
function closeDialog_edit(){
$('#loginInfoEdit').dialog('close');
}
【图四:确认弹出框】就是一个消息框,easyui它可以模仿html的alert()、confirm()等提示框,而且画面更美观。
图四批量禁用的代码如下:
//禁用操作
$.messager.confirm('禁用提示', '你确定禁用下列用户吗?<br/>'+cods.join(','), function(r){
if (r){
var url = root+'/ospm/loginInfo/doLoginInfoInvalid.jhtml?loginId='+loginId;
changeStatus(url);
}
});
很抱歉,只完成了用户管理一个模块的功能。
附件带项目源码,希望对大家有所帮助。(源码一包含项目源码和数据库,源码二包含项目jar包)
关键jar版本:hibernate3.3、spring2.6、struts2.1
数据库:mysql5.1
数据库连接池:bonecp 0.7
项目类型:eclipse - dynamic web project
登录帐号:admin 密码:admin
部署方式:
①下载“源码一”和“源码二”,然后分别解压
②源码一包含项目源码和部分jar包以及*.sql;源码二包含其余jar包,直接放入OSPM\WebRoot\WEB-INF\lib目录下即可
③使用eclipse打开,import导入项目
④修改OSPM/config/mysql-jdbc.properties数据库连接帐号密码
⑤使用eclipse自带插件:servers部署启动项目
⑥访问http://localhost:8080/OSPM即可
需要注意的是,这个项目是eclipse下创建的dynamic web project不是tomcat项目
另一种方案:
完成上面①~④步骤以后把项目export成war包,直接放到tomcat的webapps下然后启动

- 大小: 17 KB

- 大小: 106.1 KB

- 大小: 27.7 KB

- 大小: 34.9 KB
分享到:
相关推荐
EasyUI 是一个基于 jQuery 的轻量级前端框架,它为开发者提供了一系列的组件和插件,使得构建交互式用户界面变得更加便捷。这个压缩包“jquery-easyui.zip”包含了使用 EasyUI 实现的一个HTML框架,它主要用于简化...
项目使用SSH架构,界面纯粹使用Jquery-easyui,数据库使用oracle。这只是系统中一个很小的模块,适合初学者学习。传输数据的方式使用Ajax,json,数据动态生成饼状图,柱状图。实现了excel表的导入导出。希望给诸位...
所用到的技术有springMVC注解,,jQuery,jQuery-Easyui,JSON,JS技术,Maven技术,Ajax无刷新登录,注册等等,Mybatis技术,还有导出Excel通用方法,通用类有需要的朋友可以下下来直接使用,以及RestFUL风格增删改查,...
jquery-easyui-1.2.2jquery-easyui-1.2.2jquery-easyui-1.2.2
在版本1.3.3中,EasyUI 继续保持着其易用性和强大的特性,使得开发人员能够更高效地实现页面布局、数据展示、用户交互等功能。 1. **基础组件** jQuery EasyUI 提供了一系列基础组件,如对话框(dialog)、表单...
同时,jQuery EasyUI还支持动态切换主题,只需通过JavaScript调用相关API,即可实现页面主题的实时更换,增强了用户体验。 总结来说,jQuery EasyUI的主题系统为开发者提供了丰富的选择,不仅可以快速构建美观的...
jQuery EasyUI 是一个基于 jQuery 的轻量级框架,它为开发者提供了一系列组件,使得构建交互式、响应式的Web应用程序变得更加简单。在1.7.0版本中,这个强大的工具集进一步优化和完善,为开发者带来了更丰富的功能和...
2. **表格(Table)**:支持数据分页、排序、过滤和编辑,可以与后台数据库无缝集成,实现数据的CRUD操作。 3. **树形结构(Tree)**:用于展示层级关系的数据,如目录结构、组织结构等。 4. **菜单(Menu)**:可创建...
标题中的 "Jquery-Easyui-1.2.3" 指的是该框架的特定版本,1.2.3版,这是其在某个时间点的稳定版本,包含了当时已知的所有功能和优化。 EasyUI 的核心理念是简化前端开发工作,通过预定义的CSS样式和JavaScript插件...
在提供的“jquery-easyui-1.2.4”压缩包中,包含了大量的实际示例,覆盖了 EasyUI 的所有主要组件和功能。通过这些示例,开发者可以直观地了解每个组件的用法和配置,学习如何在实际项目中应用。 总的来说,jQuery...
jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI...jQuery-Easyui-1.2.6中含有jQuery库、easyui库、demo实例和jquery_easyui_中文帮助文档等。
例如,开发者可以通过简单的配置实现数据的增删改查,同时可以定制化列宽、行样式等,提升用户体验。 3. **Tree组件** Tree 组件是用于展示层次结构数据的工具,常用于组织结构、目录结构等场景。在 jQuery EasyUI...
总的来说,"jquery-easyui-1.5完整源码.zip"提供的源代码资源,不仅让我们能够深入了解EasyUI的工作机制,还为我们提供了定制和优化组件的可能性。无论是初学者还是经验丰富的开发者,都能从中受益匪浅,提升自己的...
easyui是一种基于jQuery的用户界面插件集合。 easyui为创建现代化,互动,JavaScript应用程序,提供必要的功能。 使用easyui你不需要写很多代码,你只需要通过编写一些简单HTML标记,就可以定义用户界面。 easyui...
在“jquery-easyui-EDT-1.5.5”扩展中,EDT(Enhanced Data Table)是EasyUI的一个增强版表格组件,它提供了更强大的数据处理能力,如分页、排序、过滤和自定义操作等功能。这使得开发者在处理大量数据时能更加...
总结来说,"jquery-easyui-EDT-1.4-build1-附带各种主题" 提供了一个全面的前端开发环境,无论是快速构建原型还是开发复杂的 Web 应用,都能得到有力的支持。通过掌握其核心组件和主题系统,开发者可以创建出美观且...
在 "jquery-easyui-1.3.2" 版本中,官方提供了一系列的演示,涵盖了各个组件的基本用法和复杂功能,让开发者可以快速上手。 1. **DataGrid**:数据网格是EasyUI的重要组件,用于展示和操作表格数据。在demo中,你...
该资源为jquery-easyui-1.5.5版本,包含easyui插件所依赖的js和css
它支持分页、排序、过滤、编辑等功能,并且能够与后端数据库无缝对接,进行数据的增删改查操作。 2. **表单(Form)**:提供了各种表单元素,如文本框、复选框、单选按钮等,方便用户输入数据。EasyUI的表单支持...