- 浏览: 153610 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (102)
- android项目总结 (8)
- WEB前端 (3)
- web开发常用的东东备份-使用jQquery+CSS实现国际化转换 (1)
- WEB前端,利用jQuery的动态获取JSON数据 (1)
- 曾经的笔记——android的学习笔记 (1)
- Android Service (1)
- 实用小工具 (2)
- android游戏 (0)
- android游戏 俄罗斯方块 源码 (1)
- android 游戏 俄罗斯方块 基础类及其属性和方法 (1)
- Tetris的页面分析和算法总结 (0)
- android 签名 (1)
- iOS OC (5)
- pdf分割 (1)
- iOS学习和开发笔记 (11)
- iOS工程管理 (1)
- JS校验价格和金额 (1)
- 设置行的样式 创建单选表视图 单元格高度自适应 创建索引表视图 (1)
- iOS OC SQLite (2)
- iOS基础面试题(一) (0)
- iOS 百度第三方登录 (1)
- iOS小知识 (20)
- 一个苹果证书怎么多次使用——导出p12文件 (1)
- JavaScriptCore (1)
- 参考资料 (1)
- SVN (1)
- mac OS 10.11 安装mysql的记录 (1)
- iOS基础 (2)
- android与原生的JS交互 (1)
- iOS设计和屏幕适配 (1)
最新评论
-
zhengjj_2009:
chen_lian 写道0.50 无法验证通过我已经很久不完J ...
JS校验价格和金额的方法 -
chen_lian:
0.50 无法验证通过
JS校验价格和金额的方法 -
zhengjj_2009:
我为了安全起见,所以放了两个jar,其实一个应该可以了。
自己整理的java版的PDF分割实用代码 -
tjj006:
为什么需要两个ITEXT包??
自己整理的java版的PDF分割实用代码
YUI2.8 实现datasource datatable panel的综合应用,实时刷新数据
走了好长一段时间的弯路,终于实现了使用YUI2.8 实现datasource datatable panel的综合应用的例子,现在把它记录下来,作为以后的例子可以参考。
后台的程序
1、BaseStruts2Action的源代码:
package com.demo.action; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("all") public class BaseStruts2Action extends ActionSupport { private static final long serialVersionUID = -7098181898244016914L; public HttpServletRequest getRequest() { return ServletActionContext.getRequest(); } public HttpServletResponse getResponse() { return ServletActionContext.getResponse(); } public void outJsonString(String str) { getResponse().setContentType("text/javascript;charset=UTF-8"); outString(str); } public void outJson(Object obj) { String str = JSONObject.fromObject(obj).toString(); System.out.println("str="+str); outJsonString(str); } public void outJsonArray(Object array) { outJsonString(JSONArray.fromObject(array).toString()); } public void outString(String str) { try { //禁止缓存json数据 HttpServletResponse response = getResponse(); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Expires", "0"); response.setCharacterEncoding("UTF-8"); response.setContentType("application/json;charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.write(str); writer.flush(); writer.close(); } catch (IOException e) { } } public void outXMLString(String xmlStr) { getResponse().setContentType("application/xml;charset=UTF-8"); outString(xmlStr); } protected String postData; protected int recordsReturned; protected int totalRecords; protected int startIndex; protected String sort; protected String dir; protected List records; protected int pageSize; public int getRecordsReturned() { return recordsReturned; } public void setRecordsReturned(int recordsReturned) { this.recordsReturned = recordsReturned; } public int getTotalRecords() { return totalRecords; } public void setTotalRecords(int totalRecords) { this.totalRecords = totalRecords; } public int getStartIndex() { return startIndex; } public void setStartIndex(int startIndex) { this.startIndex = startIndex; } public String getSort() { return sort; } public void setSort(String sort) { this.sort = sort; } public String getDir() { return dir; } public void setDir(String dir) { this.dir = dir; } public List getRecords() { return records; } public void setRecords(List records) { this.records = records; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public String getPostData() { return postData; } public void setPostData(String postData) { this.postData = postData; } }
2、UserAction的源代码
package com.demo.action; import java.util.ArrayList; import java.util.List; import net.sf.json.JSONObject; import com.demo.model.Book; import com.demo.model.InstBean; import com.demo.model.User; import com.demo.service.IBookService; import com.demo.service.IUserService; import com.demo.yuiutil.JSONResult; import com.demo.yuiutil.YUIPagination; @SuppressWarnings("all") public class UserAction extends BaseStruts2Action{ private IUserService userService; private User user; public String saveUser(){ userService.saveUser(user); System.out.println("saveUser() has done.... "); return SUCCESS; } public void getUserList(){ if( startIndex< 0 ){ startIndex = 0; } if( pageSize<= 0 ){ pageSize = 10; } System.out.println(" getUserList: startIndex="+startIndex+";pageSize="+pageSize); YUIPagination yuiPage = userService.getUserPagenation(startIndex, pageSize); this.outJson(yuiPage); } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public IUserService getUserService() { return userService; } public void setUserService(IUserService userService) { this.userService = userService; } }
3、YUIPagination的源代码
package com.demo.yuiutil; import java.util.List; @SuppressWarnings("all") public class YUIPagination { private int recordsReturned; private int totalRecords; private int startIndex; private String sort; private String dir; private List records; private int pageSize; public int getRecordsReturned() { return recordsReturned; } public void setRecordsReturned(int recordsReturned) { this.recordsReturned = recordsReturned; } public int getTotalRecords() { return totalRecords; } public void setTotalRecords(int totalRecords) { this.totalRecords = totalRecords; } public int getStartIndex() { return startIndex; } public void setStartIndex(int startIndex) { this.startIndex = startIndex; } public String getSort() { return sort; } public void setSort(String sort) { this.sort = sort; } public String getDir() { return dir; } public void setDir(String dir) { this.dir = dir; } public List getRecords() { return records; } public void setRecords(List records) { this.records = records; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } }
4、User IUserService UserServiceImpl IUserDao UserDaoImpl就是基本的java程序,我就不沾出来了。
5、struts的配置文件
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <include file="struts-default.xml"/> <constant name="struts.objectFactory" value="spring" /> <package name="yuiapp" namespace="/yuiapp" extends="struts-default"> <action name="user_*" method="{1}" class="com.demo.action.UserAction"> <result name="success">/pages/datatable/success.jsp</result> <result name="input">/pages/datatable/addUser.jsp</result> </action> </package> </struts>
前台的程序
1、listUser.jsp (/yuiapp/WebRoot/pages/datatable/listUser.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"> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <%String sysPath =basePath+"appjs/yui/build"; %> <% response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", 0); response.flushBuffer(); Cookie killMyCookie = new Cookie("mycookie", null); killMyCookie.setMaxAge(0); killMyCookie.setPath("/"); response.addCookie(killMyCookie); %> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta HTTP-EQUIV="Pragma" CONTENT="no-cache"> <meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> <meta HTTP-EQUIV="Expires" CONTENT="0"> <title>list user</title> <style type="text/css"> /*margin and padding on body element can introduce errors in determining element position and are not recommended; we turn them off as a foundation for YUI CSS treatments. */ body { margin:0; padding:0; } </style> <link rel="stylesheet" type="text/css" href="<%=sysPath %>/fonts/fonts-min.css" /> <link rel="stylesheet" type="text/css" href="<%=sysPath %>/paginator/assets/skins/sam/paginator.css" /> <link rel="stylesheet" type="text/css" href="<%=sysPath %>/datatable/assets/skins/sam/datatable.css" /> <link rel="stylesheet" type="text/css" href="<%=sysPath %>/container/assets/skins/sam/container.css" /> <script type="text/javascript" src="<%=sysPath %>/yahoo-dom-event/yahoo-dom-event.js"></script> <script type="text/javascript" src="<%=sysPath %>/connection/connection-min.js"></script> <script type="text/javascript" src="<%=sysPath %>/json/json-min.js"></script> <script type="text/javascript" src="<%=sysPath %>/element/element-min.js"></script> <script type="text/javascript" src="<%=sysPath %>/paginator/paginator-min.js"></script> <script type="text/javascript" src="<%=sysPath %>/datasource/datasource-min.js"></script> <script type="text/javascript" src="<%=sysPath %>/datatable/datatable-min.js"></script> <script type="text/javascript" src="<%=sysPath %>/dragdrop/dragdrop-min.js"></script> <script type="text/javascript" src="<%=sysPath %>/container/container-min.js"></script> <script type="text/javascript" src="<%=sysPath %>/editor/editor-min.js"></script> <!--begin custom header content for this example--> <style type="text/css"> /* custom styles for this example */ .yui-skin-sam .yui-dt-liner { white-space:nowrap; } </style> </head> <body class="yui-skin-sam"> <div class="exampleIntro"> <p>实现的功能:从前端发送查询请求,后端处理请求,返回JSON数据,在前台展示</p> </div> <input onclick="addUser();" type="button" value="增加" /> <div id="container"> <div id="datatableId"></div> </div> <div id="dt-pag-nav"></div> <div id="addPanelId"></div> <script type="text/javascript"> YuiUser = function() { var myPaginator; this.reloadDT = function(){ myPaginator.fireEvent('changeRequest',myPaginator.getState({'page':myPaginator.getCurrentPage()})); }; this.initDataTable = function(){ // Column definitions var myColumnDefs = [ {key:"id"}, {key:"loginName"}, {key:"userName"} ]; var myDataSource = new YAHOO.util.DataSource("http://127.0.0.1:8080/yuiapp/yuiapp/user_getUserList.action?"); myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON; myDataSource.responseSchema = { resultsList: "records", fields: [ {key:"id"}, {key:"loginName"}, {key:"userName"} ], metaFields: { totalRecords: "totalRecords" // Access to value in the server response } }; // DataTable configuration myPaginator = new YAHOO.widget.Paginator( { firstPageLinkLabel : "第一页", lastPageLinkLabel : "最后页", previousPageLinkLabel:"上一页", nextPageLinkLabel:"下一页", rowsPerPage:15, containers : ["dt-pag-nav"], pageReportTemplate : "查询到{totalRecords}条记录" }); var myConfigs = { MSG_EMPTY : "没有信息", MSG_ERROR : "查询错误", MSG_LOADING : "正在查询,请稍候...", initialRequest: "startIndex=0&pageSize=10", dynamicData: true, paginator: myPaginator }; // DataTable instance var myDataTable = new YAHOO.widget.DataTable("datatableId", myColumnDefs, myDataSource, myConfigs); // Update totalRecords on the fly with value from server myDataTable.handleDataReturnPayload = function(oRequest, oResponse, oPayload) { oPayload.totalRecords = oResponse.meta.totalRecords; return oPayload; }; };// end for initDataTable() }; yuiUser = new YuiUser(); yuiUser.initDataTable(); var addPanel; function addUser(){ addPanelId.style.display=""; addPanel = new YAHOO.widget.Panel("addPanelId", {width:"400px",height:"200px",modal:true,visible:true, draggable:true, close:true } ); addPanel.setHeader("增加用户"); addPanel.setBody("<iframe src='addUser.jsp' style='width:350px;height:150px;' frameborder='0' id='addPanelFrame' name='addPanelFrame'></iframe>"); addPanel.render(); //addPanel.center(); } function closeBox(){ alert("操作成功!"); addPanel.hide(); addPanelId.style.display="none"; //addPanel.destroy(); //updateNewsBox.destroy(); yuiUser.reloadDT(); } </script> </body> </html>
2、addUser.jsp (/yuiapp/WebRoot/pages/datatable/addUser.jsp)
<%@ page language="java" contentType="text/html; charset=utf-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W 3C //DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>add_user</title> </head> <body> <s:form action="/yuiapp/user_saveUser.action" method="post"> <s:textfield name="user.loginName" label="登录名"/> <s:textfield name="user.userName" label="姓名"/> <s:submit/> </s:form> </body> </html>
3、success.jsp(/yuiapp/WebRoot/pages/datatable/success.jsp)
<%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> </head> <body> <center>操作成功</center> <script type="text/javascript"> window.parent.closeBox(); </script> </body>
相关推荐
在本教程中,我们将深入探讨如何使用Yahoo User Interface (YUI) 2.8 版本来实现一个从服务器端动态获取数据并具备分页功能的DataTable。YUI 是一个强大的JavaScript库,提供了丰富的组件和工具,用于创建交互式和...
综上所述,通过结合使用 JavaScript YUI 2.8 的 DataTable 和 jQuery form 插件,我们可以创建一个动态、交互式的表格,能够异步请求数据并实现分页功能。在实际项目中,还需要注意性能优化,比如使用服务器端分页...
使用YUI2.8 仿照JQuery UI 的select插件写的一个函数 详情见我的博客http://hi.baidu.com/hjzheng
这是对YUI拖拽例子的改编,大家可以去访问的博客 http://hi.baidu.com/hjzheng
6. **数据管理**:YUI Data模块提供了数据存储和操作的功能,例如数据模型、数据视图和数据绑定,为复杂的数据驱动应用提供了基础。 7. **布局管理**:YUI的Layout Manager模块可以帮助开发者创建响应式和自适应的...
在"YUI-ajax框架开发文档"中,我们可以深入探讨YUI如何通过其Ajax组件实现异步数据通信。 YUI中的Ajax框架主要由`YAHOO.util.Connect`和`YAHOO.widget.DataSource`两个关键部分组成。`YAHOO.util.Connect`是YUI的...
5. **数据绑定**:YUI的数据绑定功能,让数据和视图之间的同步变得容易,减少了DOM操作,提高性能。 二、YUI的组件体系 1. **DOM操作**:YUI的Node和Selector模块提供了高效的DOM操作接口,包括选择、操作、遍历DOM...
YUI的DataSource和Model组件支持异步数据获取和数据模型的建立,可以方便地与服务器进行数据交互,并通过ModelList进行数据集合的管理。 6. **动画效果** Animation模块提供了丰富的动画效果,可以实现平滑的元素...
当用户触发一个操作(如点击按钮),Struts2 Action处理请求并返回JSON数据,YUI通过监听Ajax请求完成事件,接收到数据后更新DOM元素,实现无刷新的用户体验。 5. **异步操作**:YUI的Event和Ajax模块使得Struts2...
在这样的论坛系统中,YUI的插件可能被用来实现如消息通知、用户界面交互、数据加载优化等功能。 总之,Yahoo YUI插件库是Web开发者的强大工具箱,提供了丰富的功能来提升Web应用的质量和用户体验。通过结合YUI核心...
DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现Ajax应用。YUI(Yahoo! User Interface Library)是Yahoo开发的一套前端JavaScript和CSS库,用于构建...
5. **数据表格**:YUI的DataTable组件可用于展示和操作大量数据,支持排序、过滤和分页等功能。 通过学习和实践这些示例,开发者可以深入了解YUI的功能和用法,提高自己的前端开发技能。 总结来说,YUI是一个强大...
《深入理解YUI扩展EXT——构建高效前端UI与Ajax应用》 YUI(Yahoo! User Interface Library)是由雅虎公司开发的一套开源JavaScript库,它为开发者提供了丰富的UI组件和功能,以帮助创建高性能、易用的Web应用程序...
- **Ajax(Asynchronous JavaScript and XML)**:支持异步数据交换,与服务器进行无刷新通信。 - **IO(Input/Output)**:提供HTTP请求功能,支持GET和POST等HTTP方法,用于与服务器进行数据交互。 - **数据...
而YUI-EXT则是对YUI功能的补充,它主要专注于用户界面组件的实现,提供了丰富的UI元素和工具,使得开发者可以快速构建出专业级别的Web应用界面。 在YUI-EXT中,有几个核心概念值得深入理解: 1. **组件...
在“io”模块中,YUI3提供了对异步数据请求的支持,如GET、POST等HTTP方法,这在构建Web应用时非常关键。开发者可以通过“yui3-master.zip”来学习如何进行高效的网络通信。 7. **响应式设计** YUI3也考虑到了...
标题:“YUI+Ant 实现JS CSS压缩” 在Web开发中,为了提高页面加载速度和优化用户体验,开发者通常会使用代码压缩工具来减少JavaScript(JS)和CSS文件的大小。YUI Compressor是 Yahoo! 推出的一款开源的压缩工具,...
8. **国际化与本地化**:YUI的Lang模块支持多语言环境,方便实现应用的国际化和本地化。 三、YUI 3.8.1的组件库 在YUI 3.8.1中,除了上述核心特性外,还包括众多实用的组件: 1. **DataTable**:用于创建交互式...
10. **国际化与本地化**:提供多语言支持,便于实现应用的全球化。 在压缩包中的示例,你可以看到如何实际应用这些功能。通过这些示例,你可以学习如何创建事件监听器、如何使用布局组件构建页面结构、如何实现动画...
这篇博文“YUI3 中tree的两种实现”探讨了如何在YUI3中创建和管理树形结构。 1. **YUI3 TreeView组件** YUI3 TreeView组件是YUI3核心库的一部分,它允许开发者创建交互式的树结构。这个组件支持节点的添加、删除、...