jquery ui和easy ui联合使用
本文以jquery ui中的自动完成(autocomplete)插件, easy ui中的(tree)树形菜单插件,(grid)网格插件的综合运用为例来展示插件的魅力.
开发环境:struts2.3 jquery UI1.10.4 jdk1.7 EasyUI 1.4.5
一 插件介绍
1.1 自动完成(autocomplete)
目前Web2.0时代网络的一个重要特点就是用户体验效果更好,页面交互更多,这种特点无处不在。以百度搜索为例,如图1.1所示,百度网首页上的搜索功能就使用了自动完成技术。当用户输入任意一个信息后,自动帮助用户将与输入信息有关的数据显示在搜索框下方,以供用户选择,极大地提高了用户的使用体验度。
图1.1 百度查询自动完成效果
要想实现图1.1中自动完成功能的效果需要用到JQuery UI提供的autocomplete插件。语法如下。
语 法
$(selector).autocomplete([settings]);
在语法中:
参数settings:$(selector).autocomplete()方法的参数列表,用于配置autocomlete的键值对集合。详细配置参数如表1-2和表1-3所示。
表1-2 autocomplete插件常用参数
参 数 |
说 明 |
String Source Array Source fLinctionSource(Object reuqest,functionresponse(Object data)) |
用于指定数据来源,类型为String、Array、functionString:用于Ajax请求的服务器端地址,返回Array(JSON格式)Array:字符串数组或JSON数组function(request,response):通过request.term获得输入的值(term为默认参数名),response([Array])来提供呈现数据 |
Number minLength |
当输入框内字符串长度达到minLength时,激活autocomplete |
Boolean autoFocus |
肖autocomplete选择菜单弹出时,自动选中第一个 |
Number delay |
延迟多少毫秒激活autocomplete |
表1-3 autocomplete插件常用事件
事 件 |
说 明 |
function create(Event event,Object ui) |
autocomplete创建时触发,可以在此事件中,对外观进行一些控制 |
function search(Event event, Object ui) |
在开始查找请求之前触发,可以在此事件中返吲false来取消请求 |
function open(Event event,Object ui) |
autocomplete的结果列表弹出时触发 |
function focus(Event event,Obj ect ui) |
autocomplete的结果列表任意一项获得焦点时触发,ui.item为获得焦点的项 |
续表
事 件 |
说 明 |
function select(Event event,Object ui) |
autocomplete的结果列表任意一项选中时触发,ui .item为选中的项 |
function close(Event event,Object ui) |
autocomplete的结果列表关闭时触发 |
function change(Event event,Object ui) |
当值改变时触发,ui.item为选中的项 |
了解了autocomplete插件的使用语法和常用参数列表之后,下面使用autocomplete插件实现类似百度搜索的自动完成功能,主要步骤如下。
(l)引入autocomplete插件及样式文件。
(2)定义一个输入框。
(3)定义数据来源。
(4)使用autocomplete方法,并通过其source参数指定数据来源。
1.2 树形菜单插件(tree)
tree插件的使用语法如下。
$("#tree").tree({...});
在语法中:
参数settings:$(selector).tree()方法的参数列表,是用于配置tree的键值对集合。详细配置参数如表1-5 -表1-7所示。
表1-5 tree插件常用参数
参数 |
说 明 |
默认值 |
String url |
获取远程数据的URL |
null |
String method |
获取数据的HTTP method |
post |
boolean animate |
定义当节点展开折叠时是否显示动两效果 |
false |
boolean checkbox |
定义是否在每个节点前边显示checkbox |
false |
booiean cascadeCheck |
定义是否级联选中 |
true |
boolean onlyLeafCheck |
定义是否只在叶节点前显示checkbox |
false |
boolean dnd |
定义是否启用拖放 |
false |
Array data |
加载的节点数据 |
riull |
表1-6 tree插件常用方法
方 法 |
说 明 |
loadData(data) |
如载树的数据 |
getNode(target) |
获取指定的节点对象 |
getData(target) |
获取指定的节点数据,包括它的子节点 |
reload(target) |
重新加载树的数据 |
getRoot() |
获取根节点,返回节点对象 |
getParent(target) |
获取父节点,target参数指节点的DOM对象 |
getChildren(target) |
获取予节点,target参数指节点的DOM对象 |
getChecked( ) |
获取所有选中的节点 |
getSelected( ) |
获驭选中的节点并返回它,如果没有选中节点,就返回null |
find(id) |
找到指定的节点并返回此节点对缘 |
select(target) |
选中一个节点,target参数表示节点的DOM对象 |
check(target) |
把指定节点设置为勾选状态 |
uncheck(target) |
把指定节点设置为未勾选状态 |
collapse(target) |
折叠一个节点,target参数表示节点的DOM对象 |
expand(target) |
展开一个节点,target参数表示节点的DOM对象 |
collapseAll(target) |
折叠所有的节点 |
expandAll(target) |
展开所有的节点 |
expandTo(target) |
从指定节点的根部展开 |
续表
方 法 |
说 明 |
append(param) |
追加一些子节点到一个父节点,param参数有两个特性:parent: DOM对象,追加到的父节点,如果没有分配,则追加为根节点data:数组,节点的数据 |
toggle(target) |
切换节点的展开/折叠状态,target参数表示节点的DOM对象 |
表1-7 tree插件常用事件
事件 |
说 明 |
onClick(node) |
当用户单击一个节点时触发,node参数包含下列属性: id:节点的id text:节点的文字 checked:节点是否被选中 attributes:节点自定义属性 target:被单目标的DOM对象 |
onDbIClick(node) |
当用户双击一个节点时触发 |
onBeforeLoad(node, param) |
当加载数据的请求发出前触发,返回false就取消加载动作 |
onLoadSuccess(node,data) |
当数据加载成功时触发 |
onLoadError(arguments) |
当数据加载失败时触发,arguments参数与JQuery.ajax的‘error’函数一样 |
了解了tree插件的使用语法和常用参数列表之后,接下来使用tree插件来实现树形功能菜单效果。大致实现岁骤与普通JQuery UI插件相同,这里不再赘述。
1.3 网格(datagrid)插件
在实际开发中,网格组件是比树形菜单使用频率更高的组件之一。接下来将向大家介绍使用easy UI中的datagrid插件实现列表展示功能,该插件使用语法如下。
语 法
$(selector).datagrid([settings]);
在语法中:
参数settings:用于配置datagrid的键值对集合。详细配置参数如表1-9 -表1-11所示。
表1-9 datagrid插件常用参数
参数 |
说 明 |
默认值 |
Array columns . |
datagrid的colurnn的配置对象,更多详细信息参见column的特性 |
Null |
boolean striped |
若为true,则把行条纹化(即奇偶行使用不同背景色) |
False |
String method |
请求远程数据的method类型 |
Post |
String url |
从远程站点请求数据的URL |
Niill |
String loadMsg |
当从远程站点加载数据时,显示的提示信息 |
Processing. pleasewait- |
boolean pagination |
若为true,则在datagrid的底部显示分页栏 |
False |
boolean rowNumbers |
若为true.则显示行号的列 |
False |
boolean singleSelect |
若为true,则只允许选中一行 |
False |
Number pageNumber |
当设置了paglnation特性时,初始化页码 |
l |
Number pageSize |
当设置了pagination特性时,初始化页码尺寸 |
10 |
Array pageList |
当设置了pagination特性时,初始化页面尺寸的选择列表 |
[10,20,30j40,50] |
function rowStyler |
返回如'background:red'的样式,该函数需要两个参数: rowIndex:行的索引,从O开始 rowData:此行相应的记录 |
|
function loadFilter |
返回过滤的数据并显示。这个函数需要…个参数fdatal,表示原始数据 可以把原始数据变成标准数据格式,此函数必须返回标准数据对象,含有’total’和’rows’特性 |
表1-10 datagrid插件常用方法
方 法 |
说 明 |
options() |
返回options对象 |
getPager() |
返回pager 对象 |
load(param) |
加载并显示第一页的行,如果指定param参数,它将替换queryParams特性 |
续表
方 法 |
说 明 |
reload(param) |
重新加载行,就像load方法一样,但是保持在当前页 |
loadData(data) |
加载本地数据,旧的行会被移除 |
getData() |
返回加载的数据 |
getRows() |
返回当前页的行 |
getRowln dex(row) |
返回指定行的索引,row参数可以是一个行记录或者一个id字段的值 |
getSelected( ) |
返回第一个选中的行或者null |
getSelections( ) |
返回所有选中的行,当没有选中的记录时,将返回空数组 |
表1-11 datagrid插件常用事件
事 件 |
说 明 |
onLoadSuccess(data) |
当数据加载成功时触发 |
onLoadError( ) |
加载远程数据发生某些错误时触发 |
onBeforeLoad(param) |
发送加载数据的请求前触发,如果返卿false加载动作就会取消 |
onClickRow(rowIndex,rowData) |
当用卢单击一行时触发,参数包括: rowIndex:被单击行的索引,从0开始 rowData:被单击行对应的记录 |
onDblClickRow(rowIndex,rowData) |
当用户双击一行时触发,参数包括: rowIndex:被双击行的索引,从O开始 rowData:被双击行对应的记录 |
onClickCell(rowIndex.field.value) |
当用户单击一个单元格时触发 |
onDblClickCell(rowIndex, field,value) |
当用户双击一个单元格时触发 |
onSelect(rowIndex,rowData) |
当用户选中一行时触发,参数包括: rowIndex:选中行的索引,从0开始 rowData:选中行对应的记录 |
datagrid的Column是一个数组对象,它的每个元素也是一个数组。它定义了每个列的字段。关于column对象的详细参数说明如表1-12所示。
表1-12 column常用属性参数
参 数 |
说 明 |
String title |
列的标题文字 |
String field |
列的字段名 |
Number width |
列的宽度 |
Number rowspan |
指一个单元格占据多少行 |
Number colspan |
指一个单元格占据多少列 |
String align |
指如何对齐此列的数据,可以用'left'、'right'、'center' |
boolean hidden |
若为true,则隐藏此列 |
boolean checkbox |
若为true,则显示checkbox |
function formatter |
单元格的格式化函数,需要3个参数: value:字段的值 rowData:行的记录数据 rowIndex:行的索引 |
续表
参 数 |
说 明 |
function styler |
单元格的样式函数,返回样式字符串来自定义此单元格的样式,如'background:red'。此函数需要3个参数: value:字段的值 rowData:行的记录数据 rowIndex:行的索引 |
function sorter |
自定义字段的排序函数,需要两个参数: a:第一个字段值 b:第二个字段值 |
了解了这些组件之后,接下来我们来看综合运用的案例!
二 综合案例
工程目录
sql代码
CREATE TABLE department
(deptId SMALLINT PRIMARY KEY,departName VARCHAR(20) NOT NULL,address VARCHAR(20)
)
;CREATE TABLE student
(stuId INT PRIMARY KEY AUTO_INCREMENT,stuName VARCHAR(20) NOT NULL,gender VARCHAR(2),age SMALLINT,address VARCHAR(200) DEFAULT '学生宿舍',deptIdd SMALLINT,FOREIGN KEY(deptIdd) REFERENCES department(deptId)
)AUTO_INCREMENT=100
;
INSERT INTO department VALUES (10,'计算机系','计算机楼302');
INSERT INTO department VALUES (11,'艺术系','艺术楼211');
INSERT INTO department VALUES (12,'经管系','商学院911');
INSERT INTO department VALUES (13,'工程系','工程楼301');
INSERT INTO department VALUES (14,'土木系','建筑楼355');
--
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('王燕','女',18,DEFAULT,10);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('张栋','男',21,DEFAULT,10);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('李波','男',21,DEFAULT,11);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('陈建','男',19,DEFAULT,11);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('王江洪','男',25,DEFAULT,12);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('潘将','男',24,DEFAULT,13);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('张斌','男',22,DEFAULT,14);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('张斌','女',20,DEFAULT,10);
--
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('刘大海','男',28,DEFAULT,10);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('刘德华','男',31,DEFAULT,10);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('周润发','男',41,DEFAULT,11);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('张学友','男',37,DEFAULT,11);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('周星驰','男',42,DEFAULT,12);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('刘亦菲','女',24,DEFAULT,13);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('胡歌','男',32,DEFAULT,14);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('范冰冰','女',20,DEFAULT,10);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('杨幂','女',26,DEFAULT,14);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('刘涛','女',27,DEFAULT,13);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('周迅','女',21,DEFAULT,13);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('古力娜扎','女',19,DEFAULT,10);
INSERT INTO Student(stuName,gender,age,address,deptIdd) VALUES ('黑山老妖','妖',99,DEFAULT,12);
页面代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="path" value="${pageContext.request.contextPath}"></c:set>
<c:set var="scheme" value="${pageContext.request.scheme}"></c:set>
<c:set var="serverName" value="${pageContext.request.serverName}"></c:set>
<c:set var="serverPort" value="${pageContext.request.serverPort}"></c:set>
<c:set var="basePath" value="${scheme}://${serverName }:${serverPort }${path }/"></c:set>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="${basePath }">
<title>jquery 常用插件</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<!-- jQuery UI样式文件 -->
<link rel="stylesheet" type="text/css" href="jqueryUI/jquery-ui-1.10.4.custom.css">
<!-- easy UI样式文件 -->
<link rel="stylesheet" type="text/css" href="easyui/easyui.css">
<link rel="stylesheet" type="text/css" href="easyui/icon.css"><style type="text/css">#tree{width:110px; float: left;}#content{ float: left;}#key{margin-bottom: 2px;}
</style>
<!--jQuery基础脚本库-->
<script type="text/javascript" src="easyui/jquery.min.js"></script>
<!-- easy ui 脚本库 -->
<script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
<!--jquery ui插件脚本库 需要写在easy ui脚本库的后面 -->
<script src="jqueryUI/jquery-ui-1.10.4.custom.js"></script> <script>
$(document).ready(function(e){//初始化树$("#tree").tree({url:'basic_tree_data.json',//远程加载tree数据的URL路径animate:true, //是否可以折叠checkbox:true, //是否显示复选框cascadeCheck:true, //是否级联onlyLeafCheck:true, //是否只有叶子节点选中dnd:true, //是否启用拖放onClick:function(node){var idStr=node.id+"";var url=node.attributes.url;var data={};//一个json对象//获得父节点var theParent=$("#tree").tree('getParent',node.target);if(idStr.length==2){data={"departName":node.text};}if(idStr.length==3){data={"departName":theParent.text,"gender":node.text};}//加载网格控件$("#dg").datagrid('load',data);}});//初始化网格控件$('#dg').datagrid({url:'ShowStudents.php', //远程请求数据的url路径pagination:true, //显示底部分页栏pageSize:3, //默认每页记录数pageList:[3,5,8], //显示列表记录数的下拉框选项columns:[[{field:'stuId',title:'学生编号'},{field:'stuName',title:'学生名称'},{field:'gender',title:'性别'},{field:'age',title:'年龄'},{field:'departName',title:'部门名称'}]],singleSelect:false, //单选还是多选rownumbers:true, //显示序号iconCls: 'icon-add', //左上角的一个图标fitColumns:true,//自适应宽度,防止水平滚动striped:true,//隔行变色loadMsg:"正努力为您加载中......"}); //初始化自动完成控件$("#myCom").autocomplete({minLength:1, //至少输入1个字符才触发下拉框source:function(request,response){$.post("ShowNames.php","queryStr="+request.term,function(data){var result=$.parseJSON(data); // 解析服务器传入的json数据response(result); //把数据展示到下拉框});} });$("[value=搜索]").click(function(e){var keyValue=$("[name=keyStr]").val();$("#dg").datagrid('load',{"queryStr":keyValue});});
});
</script>
</head>
<body>
<div id="tree"></div>
<div id="content"><div style="margin-bottom: 2px;"><h2 style="margin: 0px;"><input type="text" name="keyStr" id="myCom"><input type="button" value="搜索"/></h2></div><table id="dg" title="学生列表" class="easyui-grid" style="width:400px;" ></table>
</div>
</body>
</html>
树形菜单json数据格式
[{"id":1,"text":"全部","attributes":{"url":"ShowStudents.php"},"children":[{"id":11,"text":"计算机系","attributes":{"url":"ShowStudents.php"},"children":[{"id":111,"text":"男","attributes":{"url":"ShowStudents.php"},"iconCls":"icon-search"},{"id":112,"text":"女","attributes":{"url":"ShowStudents.php"},"iconCls":"icon-add"}]},{"id":12,"text":"艺术系","attributes":{"url":"ShowStudents.php"},"state":"open","children":[{"id":121,"text":"男","attributes":{"url":"ShowStudents.php"}},{"id":122,"text":"女","attributes":{"url":"ShowStudents.php"},"iconCls":"icon-search"}]},{"id":13,"text":"经管系","attributes":{"url":"ShowStudents.php"},"state":"open","children":[{"id":131,"text":"男","attributes":{"url":"ShowStudents.php"}},{"id":132,"text":"女","attributes":{"url":"ShowStudents.php"}}]}]
}]
jquery ui和easy ui该引入的文件
实体类pageentity
package com.accp.entitys;import java.io.Serializable;public class PageEntity implements Serializable{private static final long serialVersionUID = -1387826548078174866L;private int pageNo=1; //当前页码private int pageSize=3; //每页显示多少条private String keyStr=""; //搜索关键字,根据学生名称private String gender=""; //性别private String departName=""; //系名称public PageEntity() {}public PageEntity(int pageNo, int pageSize, String keyStr,String gender, String departName) {super();this.pageNo = pageNo;this.pageSize = pageSize;this.keyStr = keyStr;this.gender = gender;this.departName = departName;}public int getPageNo() {return pageNo;}public void setPageNo(int pageNo) {this.pageNo = pageNo;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public String getKeyStr() {return keyStr;}public void setKeyStr(String keyStr) {this.keyStr = keyStr;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getDepartName() {return departName;}public void setDepartName(String departName) {this.departName = departName;}}
dao层代码
package com.accp.dao;import java.sql.*;
import java.util.*;import com.accp.entitys.JoinEntity;
import com.accp.entitys.PageEntity;public class StudentDaoImpl implements IStudentDao{//分页查询public List<JoinEntity> queryPage(PageEntity page) {List<JoinEntity> stuList=new ArrayList<JoinEntity>();String sqlStr="SELECT stuId,stuName,gender,age,departName,d.address"+" FROM student s LEFT JOIN department d"+" ON s.deptIdd=d.deptId"+" where 1=1";if(page.getKeyStr()!=null && !page.getKeyStr().equals("")){sqlStr=sqlStr+" and s.stuName like '%"+page.getKeyStr()+"%'";}if(page.getGender()!=null && !page.getGender().equals("")){sqlStr=sqlStr+" and s.gender = '"+page.getGender()+"'";}if(page.getDepartName()!=null && !page.getDepartName().equals("")){sqlStr=sqlStr+" and d.departName = '"+page.getDepartName()+"'";}sqlStr=sqlStr+" order by s.age limit "+(page.getPageNo()-1)*page.getPageSize()+" , "+page.getPageSize();System.out.println("pageSql:"+sqlStr);Connection conn=null;PreparedStatement psmt=null;ResultSet rs=null;try {conn=BaseDao.getConn();psmt=conn.prepareStatement(sqlStr);rs=psmt.executeQuery();JoinEntity stu=null;while(rs.next()){stu=new JoinEntity();stu.setAge(rs.getInt("age"));stu.setDeptAddress(rs.getString("address"));stu.setDeptName(rs.getString("departName"));stu.setGender(rs.getString("gender"));stu.setStuId(rs.getInt("stuId"));stu.setStuName(rs.getString("stuName"));stuList.add(stu);}} catch (Exception e) {e.printStackTrace();}finally{BaseDao.closeConn(rs, psmt, conn);}return stuList;}//根据名称模糊查询所有的名称(为自动完成组件服务的)public List<String> queryStuNames(String theName) {List<String> nameList=new ArrayList<String>();String sqlStr="select stuName from student where stuName like '%"+theName+"%'";Connection conn=null;PreparedStatement psmt=null;ResultSet rs=null;try {conn=BaseDao.getConn();psmt=conn.prepareStatement(sqlStr);rs=psmt.executeQuery();while(rs.next()){nameList.add(rs.getString("stuName"));}} catch (Exception e) {e.printStackTrace();}finally{BaseDao.closeConn(rs, psmt, conn);}return nameList;}//查询总条数public int queryRows(PageEntity page) {int rows=0;String sqlStr="SELECT count(*) "+" FROM student s LEFT JOIN department d"+" ON s.deptIdd=d.deptId"+" where 1=1";if(page.getKeyStr()!=null && !page.getKeyStr().equals("")){sqlStr=sqlStr+" and s.stuName like '%"+page.getKeyStr()+"%'";}if(page.getGender()!=null && !page.getGender().equals("")){sqlStr=sqlStr+" and s.gender = '"+page.getGender()+"'";}if(page.getDepartName()!=null && !page.getDepartName().equals("")){sqlStr=sqlStr+" and d.departName = '"+page.getDepartName()+"'";}Connection conn=null;PreparedStatement psmt=null;ResultSet rs=null;try {conn=BaseDao.getConn();psmt=conn.prepareStatement(sqlStr);rs=psmt.executeQuery();if(rs.next()){rows=rs.getInt(1);}} catch (Exception e) {e.printStackTrace();}finally{BaseDao.closeConn(rs, psmt, conn);}return rows;}}
action代码
package com.accp.actions;import java.io.*;
import java.util.List;import com.accp.dao.IStudentDao;
import com.accp.dao.StudentDaoImpl;
import com.accp.entitys.JoinEntity;
import com.accp.entitys.PageEntity;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.opensymphony.xwork2.ActionSupport;public class StudentAction extends ActionSupport {private static final long serialVersionUID = -2564481343306358141L;private String queryStr;private String gender;private String departName;//分页控件自动传过来的private int rows; //每页显示多少条private int page; //当前页码private InputStream bis;public InputStream getBis() {return bis;}//分页查询public String queryPage() throws Exception {IStudentDao stuDao = new StudentDaoImpl();JSONObject finalJson = new JSONObject();JSONArray students = new JSONArray();JSONObject oneStu = null;System.out.println("departName:"+departName+",gender:"+gender+",queryStr:"+queryStr);//分页实体类PageEntity thePage=new PageEntity(page, rows, queryStr, gender, departName);List<JoinEntity> stuList=stuDao.queryPage(thePage);for (int i = 0; i < stuList.size(); i++) {oneStu = new JSONObject();oneStu.put("stuId", stuList.get(i).getStuId());oneStu.put("stuName", stuList.get(i).getStuName());oneStu.put("gender", stuList.get(i).getGender());oneStu.put("age", stuList.get(i).getAge());oneStu.put("departName", stuList.get(i).getDeptName());students.add(oneStu);}finalJson.put("total", stuDao.queryRows(thePage));finalJson.put("rows", students);System.out.println(finalJson.toString());bis = new ByteArrayInputStream(finalJson.toString().getBytes("utf-8"));return this.SUCCESS;}//查询学生的名称public String queryStuName() throws Exception {IStudentDao stuDao = new StudentDaoImpl();JSONArray names = new JSONArray();JSONObject oneStu = null;List<String> nameList=stuDao.queryStuNames(queryStr);for(String theName : nameList){oneStu=new JSONObject();oneStu.put("label", theName);names.add(oneStu);}System.out.println(names.toString());bis = new ByteArrayInputStream(names.toString().getBytes("utf-8"));return this.SUCCESS;}public String getQueryStr() {return queryStr;}public void setQueryStr(String queryStr) {this.queryStr = queryStr;}public int getRows() {return rows;}public void setRows(int rows) {this.rows = rows;}public int getPage() {return page;}public void setPage(int page) {this.page = page;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getDepartName() {return departName;}public void setDepartName(String departName) {this.departName = departName;}}
struts配置代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""struts-2.3.dtd">
<struts><constant name="struts.action.extension" value="action,do,php"></constant><package name="stu" extends="struts-default"><action name="ShowStudents" class="com.accp.actions.StudentAction"method="queryPage"><result type="stream"><param name="contentType">text/html</param><param name="inputName">bis</param></result></action><action name="ShowNames" class="com.accp.actions.StudentAction"method="queryStuName"><result type="stream"><param name="contentType">text/html</param><param name="inputName">bis</param></result></action></package>
</struts>
运行结果
jquery ui和easy ui联合使用相关推荐
- Jquery Easy UI Datagrid 上下移动批量保存数据
DataGrid with 上下移动批量保存数据 通过前端变量保存修改数据集合,一次性提交后台执行 本想结合easyui 自带的$('#dg').datagrid('getChanges'); 方法来 ...
- 第四十四课:jQuery UI和jQuery easy UI
jQuery UI是jQuery官方提供的功能效果和UI样式.作为官方出的东西,它一直没有被人们看重,一是它没有datagrid,tree等UI库必备的东西,二是它修改太过频繁,体积庞大.其实它所有以 ...
- 7个jquery easy ui 基本组件图解
下面给出7个jquery easy ui 基本组件: 1 基本面板 <!DOCTYPE html> <html> <head><meta charset=&q ...
- jQuery Easy UI ProgressBar(进度条)组件
ProgressBar(进度条)组件,这个还是挺好玩的.我们在自己做点什么的时候常常能用到,比方上传下载文件.导入导出文档啊.加载网页等等. 应用场景非常多,使用起来还非常easy. 演示样例: &l ...
- jQuery Easy UI Panel(面板)组件
panel(面板)组件,跟前面的组件使用方法差点儿都差点儿相同,也是从设置一些面板属性.操作面板触发的事件.我们可针对面板对象的操作方法这三个点去学习. 后面有一些组件要依赖于这个组件. 另一点跟前面 ...
- 初学jQuery Easy UI的总结
1.使用jQuery Easy UI的目的: jQuery Easy UI是一组基于jQuery的UI插件集合,而jQuery Easy UI 的目标就是帮助Web开发者更轻松的打造出功能丰 ...
- easyUI布局篇使用jquery easy UI的panel和layout实现界面的自适用窗口
1.问题: 最近在做AIUESUite v1.0的开发,基本上按照前期的规划,把现有的功能都一步步的实现,但是因为我们基于easy ui 的二次开发牵扯到屏幕的自适用问题一直都困扰着我们,这里我们针对 ...
- easy ui dialog 关闭之后的怪异问题
最近在工作中使用easy ui做东西,然后发现了一些不可思议的现象,笔记一下,前事不忘后事之师! 事故现场: 增加页面和修改页面是分离的两个jsp文件. 在页面加载时会用jquery去控制一些数据加载 ...
- 用Easy UI快速搭建一个后台
今天来分享一个我前端技术-------如何使用Easy UI快速搭建一个后台,本博主也只是在官网文档学习了一个小时左右,就已经会使用了,当你学了Easy UI后,一个后台短短两分钟就可以over了,好 ...
最新文章
- python 存redis失败无提示_Python Redis日志错误
- SAP PR 转 PO
- 微信小程序1. Forgot to add page route in app.json. 2. Invoking Page() in async task.
- 如何使用SAP CRM增强工具AET创建Table表格类型的增强
- 阅读 嘀嗒嘀嗒 微信公共号
- Spring @PostConstruce 和 @PreDestroy 实例化\销毁 bean 时
- wireshark找不到接口_wireshark网络小故障分析定位
- 泛微OA与SAP通过webservice方式对接数据完整操作
- 蹩脚的Access分页语句
- SQL SERVER RBAC权限管理表
- 千与千寻,真是一部给大人看的动画片
- 各数据库远程连接及ipv6环境配置
- libvirt Java 实现远程管理虚拟机
- ARM的商业模式和ARM各种版本号区分
- origin图例修改框框
- JavaWeb阶段JSP详情介绍(上)
- matlab snr mse,MATLAB 均方根误差MSE、两图像的信噪比SNR、峰值信噪比PSNR、结构相似性SSIM...
- DQL:简单的select语句书写(含where子句)
- 马未都:人生三重境界
- 开源软件FreeCAD0.20编译源码修改名称、换名称