- 浏览: 372179 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (148)
- java (89)
- flex (7)
- sns (3)
- jquery mobile gwt html5 (1)
- VirtualBox Centos 安装 (2)
- tomcat (1)
- nginx (2)
- centOS (7)
- memcache (2)
- hadoop (3)
- hbase (3)
- install (1)
- cloudera (3)
- tools (0)
- gen code (0)
- Mysql (2)
- KinderEditor (1)
- flash chart (1)
- ntsysv (1)
- hibernate search (2)
- compass (1)
- lucence (2)
- hibernate (1)
- jboss cache (0)
- 二级缓存 (1)
- maven (1)
- debian (1)
- go (1)
- golang (2)
- html5 (1)
最新评论
-
llh1985:
wave牛人~~求联系~~~邮箱llh1985@163.com ...
GWT Wave 开源代码运行跑通分析(1) -
zhengliming123:
[img][img][*][*][/flash][*]|[/i ...
hibernate Search 学习研究 附件是maven工程 -
di1984HIT:
写得很嗯好啊。
CentOS 安装 hadoop hbase 使用 cloudera 版本。(一) -
itfanr:
楼主写的真好 本地godoc
Golang 1.0 文档使用。godoc ,go 命令 学习 ,本地运行 gotour -
phe441:
灰常感谢楼主,爱死你了
URL rewrite 3.2 jar 和 文档 pdf 下载
认真做 flex + spring + blazeDS + google app JDO 分页.每次查询总数.
最近被 BlazeDS 折腾的不行了..
都有点想换成 e4x 格式的 xml 那样来的比较简单.但是终没有放弃.收获还是不错的.
首先是在 explore 里面 使用 SWFLoader 做动态加载.
根据不同的菜单 显示不同的tab 页.
但是 切换 多个标签的时候出现 问题报错:
***TypeError: Error #1034: 强制转换类型失败:无法将 Object@b932bf1 转换为 mx.messaging.messages.IMessage。
经查找是由于模块加载 是 共享类库.
有些东西没有找到..加载不全.
http://www.iteye.com/topic/297813
参考下..
做法:
将.//var swfLoader:SWFLoader = new SWFLoader();
//swfLoader.source = nodeApp + ".swf";
替换成.
var swfLoader:ModuleLoader = new ModuleLoader();
加载模块.
swfLoader.applicationDomain = ApplicationDomain.currentDomain;
//解决[TypeError: Error #1034: 强制转换类型失败:]模块加载问题.
swfLoader.loadModule(nodeApp + ".swf");
并将application进行复制.
成功加载多个模块.并且..开始出现的模块加载慢的问题解决了.
使用BlazeDS 也是挺快的.看来坚持是对的.
下面开始写分页.
引用以前的一个分页 类..转换成as
package common.page { import mx.controls.Label; import mx.events.ItemClickEvent; public class PageConf { /** 分页类开始.*./ /** 排序字段. */ public var sortField:String; /** 排序升降.des,aesc. */ public var sortDir:String; /** 分页开始. */ private var start:Number; /** 分页结束. */ private var end:Number; /** 每页最大数. */ private var limit:Number; /** 分页总数. */ public var total:Number; public function getStart():Number { return this.start; } public function getEnd():Number { //每次都重新计算End.因为.有可能在查询时,数据增加. return Math.min(this.start + this.limit, this.total); } public function getCurrPage():Number {//得到当前页. return Number(Math.floor(start / limit)); } public function getTotalPage():Number { /** 取得总共的页数. */ return Number(Math.ceil(total / limit)); } public function getGo(page:Number):void {/* 页面跳转函数.输入要跳转的页面. */ var totalPage:Number = getTotalPage(); var currentPage:Number = getCurrPage(); if (page <= 1) {/* 如果小于1.跳到首页. */ getFirst(); return; } else if (page >= totalPage) {/* 如果大于总页数跳到末页. */ getLast(); return; } else if (page == currentPage) {/* 当前页返回. */ return; } else {/* 否则进行页面跳转.也就是计算start和end. */ this.start = (page - 1) * limit; this.end = Math.min(page * limit, total); } } public function getNext():void { trace("getNextPage"); var currentPage:Number = getCurrPage(); var tempStart:Number = (currentPage + 1) * limit; if (tempStart >= total) return; this.start = tempStart; this.end = Math.min((currentPage + 2) * limit, total); } public function getFirst():void { trace("getFirst"); this.start = 0; this.end = Math.min(limit, total); } public function getLast():void { trace("getEnd"); var lastPage:Number = getTotalPage(); /** 如果刚好总页数刚好被整除.就往前一页. */ if ((lastPage * limit) >= total) { lastPage--; } this.start = lastPage * limit; this.end = Math.min((lastPage + 1) * limit, total); } public function getPrev():void { trace("getPrevpage"); var currentPage:Number = getCurrPage(); /** 前一页等于当前页数乘以每页记录数. */ this.start = Math.max((currentPage - 1) * limit, 0); this.end = Math.max((currentPage) * limit, limit); } public function hasNext():Boolean{ if (this.end == this.total) { return false; } else if (this.getTotalPage() <= 1) { return false; } else { return true; } } public function hastPrev():Boolean { if (this.start == 0) { return false; } else { return true; } } public function PageConf(start:Number, limit:Number, total:Number) {/* 构造函数.设置开始.和分页数. */ this.start = start; this.limit = limit; this.end = this.limit; this.total = total; } public function pageItemClick(itemClick:ItemClickEvent, pageInfo:Label):void { if(itemClick.index == 0){ getFirst(); }else if(itemClick.index == 1){ getPrev(); }else if(itemClick.index == 2){ getNext(); }else if(itemClick.index == 3){ getLast(); }else{ return; } } public function showPageInfo(pageInfo:Label):void {//通用显示Info页面. var tempStart:Number = 0; var tempEnd:Number = 0; if(total != 0){//解决显示数字从0开始问题.App上面是从0开始. tempStart = (start+1); } if(getCurrPage() == 0){ tempEnd = Math.min(getEnd(), total); }else{ tempEnd = getEnd(); } pageInfo.text = "["+tempStart+"-"+tempEnd+"/"+total+"]"; } public function toString():String{ return "start["+start+"]end["+ end+"]total["+total+"]limit["+limit; } } }
然后是在建立一个 模块..
<?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%" > <mx:HBox width="100%"> <mx:Label textAlign="right" paddingTop="4" id="pageInfo" width="90" height="22" fontWeight="bold" fontSize="12"></mx:Label> <mx:LinkBar id="pageLikBar"> <mx:dataProvider> <mx:Array> <mx:String>首页</mx:String> <mx:String>上一页</mx:String> <mx:String>下一页</mx:String> <mx:String>末页</mx:String> </mx:Array> </mx:dataProvider> </mx:LinkBar> </mx:HBox> </mx:Canvas>
可以在别的 文件里面 引用这个模块.
分页做的最简单 的一个分页.
而且还学会了分文件夹 进行模块管理.
分页如同显示.
其中调用方法.
<?xml version="1.0" encoding="utf-8"?> <mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#EEEEEE" width="100%" fontSize="12" initialize="initApp();" height="100%" xmlns:common="common.page.*"> <mx:RemoteObject id="systemUserDAO" destination="systemUserDAO"> <mx:method name="list" result="listHandler(event)"/> <mx:method name="listSize" result="listSizeHandler(event)"/> </mx:RemoteObject> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.events.ItemClickEvent; import mx.rpc.events.ResultEvent; import common.page.PageConf; import mx.controls.Alert; import mx.managers.PopUpManager; private var myPageConf:PageConf; //初始化函数. private function initApp():void{ //定义一个默认加载类. myPageConf = new PageConf(0,15,0); //第一次默认查询数据. systemUserDAO.listSize(); //给通用分页Bar绑定事件. commonPageBar.pageLikBar.addEventListener(ItemClickEvent.ITEM_CLICK, function(event:ItemClickEvent):void{//匿名函数. myPageConf.pageItemClick(event, commonPageBar.pageInfo); systemUserDAO.listSize(); }); } //列表显示数据. [Bindable] private var listData:ArrayCollection; //查询总数响应处理. private function listSizeHandler(event:ResultEvent):void { var pageSize:Number = event.result as Number; myPageConf.total = pageSize; systemUserDAO.list(myPageConf.getStart(), myPageConf.getEnd()); //查询出总记录数时.显示信息. myPageConf.showPageInfo(commonPageBar.pageInfo); } //查询数据响应处理. private function listHandler(event:ResultEvent):void { listData = event.result as ArrayCollection; } ]]> </mx:Script> <mx:VBox> <mx:DataGrid width="100%" height="386" editable="false" dataProvider="{listData}"> <mx:columns> <mx:DataGridColumn headerText="id" width="10" /> <mx:DataGridColumn headerText="登录名" dataField="loginName"/> <mx:DataGridColumn headerText="姓名" dataField="name"/> <mx:DataGridColumn headerText="电话" dataField="phone"/> <mx:DataGridColumn headerText="email" dataField="email"/> <mx:DataGridColumn headerText="创建时间" dataField="createDate"/> </mx:columns> </mx:DataGrid> <mx:HBox width="100%"> <mx:Button label="新增" click="addForm();"/> <mx:Button label="删除"/> <mx:Spacer width="100"/> <common:PageBar id="commonPageBar"/> </mx:HBox> </mx:VBox> </mx:Module>
这里有个问题..我是用的两次调用 remote 方法.
第一次 查询总的页数.然后 根据这个翻页. 再查询
数据.每次都是要查询这个总数的. 写了两个方法. 目前还没有想到太好的方法去查询.
后台用了一个泛型dao 发现 google app 上面是支持 反射的. 借用下别人的代码.
查询DAO 泛型 类.
package com.freewebsys.dao.impl; import java.lang.reflect.ParameterizedType; import java.util.List; import java.util.Map; import javax.jdo.PersistenceManager; import javax.jdo.Query; import org.springframework.orm.jdo.support.JdoDaoSupport; import com.freewebsys.dao.IGenericDAO; import com.freewebsys.jdo.BaseBean; import com.freewebsys.jdo.SystemUser; @SuppressWarnings("unchecked") public abstract class GenericDAOImpl<T extends BaseBean> extends JdoDaoSupport implements IGenericDAO { private Class<T> entityClass; public GenericDAOImpl() { // 经典的通过反射得到类. entityClass = (Class<T>) ((ParameterizedType) getClass() .getGenericSuperclass()).getActualTypeArguments()[0]; } @Override public boolean delete(BaseBean item) { // TODO Auto-generated method stub return false; } @Override public boolean save(BaseBean item) { PersistenceManager pm = getPersistenceManager(); System.out.println(this.entityClass + "调用save方法."); try { if (item.getId() == null) { pm.makePersistent(item); } else { BaseBean itemOld = pm.getObjectById(item.getClass(), item .getId()); pm.makePersistent(itemOld); } } catch (Exception e) { e.printStackTrace(); } finally { pm.close(); } return false; } @Override public T findById(long id) { return null; } @Override public List<T> findByProp(Map value) { return null; } @Override public List<T> list(long start, long end) { PersistenceManager pm = getPersistenceManager(); try { Query query = pm.newQuery(entityClass); /** 查询添加排序.sort是排序字段.dir是顺序还是倒序. */ System.out.println("JDO pageList:[" + query.toString() + "]start:[" + start + "]end:[" + end + "]"); query.setRange(start, end); List<T> results = (List<T>) query.execute("Smith"); // for(int i = 0; i < results.size(); i ++){ // T t = results.get(i); // System.out.println(t); // } /** 设置开始和结束. */ System.out.println("results size:[\t" + results.size()); return results; } catch (Exception e) { e.printStackTrace(); } finally { pm.close(); } return null; } @Override public long listSize() { PersistenceManager pm = getPersistenceManager(); try { long size = 0; /** 查询最大数. */ Query query = pm.newQuery("select count(id) from " + entityClass.getName()); /** 条件查询总数. */ // query = commonListQuery(query, null); /** 强制转换成int */ size = Long.parseLong(query.execute("Smith").toString()); //System.out.println("JDO pageSize:\t" + query.toString()); return size; } catch (Exception e) { e.printStackTrace(); } finally { pm.close(); } return 0; } }
同时也解决了.在翻页的时候插入新数据.翻页更新.
比较满意的分页.
附件是代码.
部署到 google 服务器上. 可以运行.
附件是工程 . 没有 BlazeDS 和 app spring的jar 文件.
发表评论
-
使用 flex4 开发通用统计系统,发布源代码至github
2014-09-08 18:53 26871,关于flex4 很老的技术,我居然还再研究使用这个东 ... -
flex + spring + BlazeDS + google App JDO 实现一个CRUD.
2010-04-25 11:29 2257flex + spring + BlazeDS + googl ... -
flex 和 flexlib类库 实现 菜单和 TabNavigator (二)
2010-04-15 21:35 1457解决 菜单重复打开问题.. 按照以前的 思路自己保存一 ... -
flex 和 flexlib类库 实现 菜单和 TabNavigator
2010-04-15 10:20 6030看到 extjs 的 TabNavigator和漂亮. 很实用 ... -
flex 和java 一起开发.实验远程调用.
2010-04-11 16:10 1944首先下载最新的 BlazeDS http ... -
又高兴了 .flash builder 4 的插件拷贝可以 在 eclipse 3.5 里面运行.
2010-03-23 14:39 4305才 把 flex builder 3.拷 ...
相关推荐
标题中的“flex + spring + BlazeDS + google App JDO 实现一个CRUD”是指使用Adobe Flex作为前端开发工具,Spring框架作为后端服务层,BlazeDS作为数据推送中间件,以及Google App Engine的JDO(Java Data Objects...
使用flex 4.5 + Spring 3.0 + Hibernate 3.3 + Cairngorm 2.2.1 + BlazeDS 3.3.0 + Spring BlazeDS Integration 1.0.3整合出的一个登录的小demo·
标题中的“PureMVC+Flex+BlazeDS+Spring+Hibernate.doc”指的是一项整合了多种技术的Web应用开发方案,这些技术包括PureMVC、Flex、BlazeDS、Spring和Hibernate。这篇文档可能是指导读者如何将这些技术结合在一起...
本方案提供了一种集成化的开发环境,即"MyEclipse7.5+flex4+spring3.0.5+struts2.2.1+hibernate3.6.0+blazeds4.0.0.14931完美整合方案",它将多个流行的技术框架整合在一起,为Web应用程序开发提供了一个强大的平台...
《Flex+Java+Spring+Hibernate+BlazeDS整合详解》 在现代的Web开发中,Flex作为客户端的富互联网应用程序(RIA)框架,与Java、Spring、Hibernate等后端技术结合,可以构建出高效、交互性强的Web应用。本文将详细...
标题“flex+blazeds+spring”表明我们要探讨的是如何将Flex前端与BlazeDS中继层和Spring后端框架结合起来,实现完整的数据交互和应用程序逻辑。 在Flex与Spring集成的环境中,Flex作为用户界面展示层,负责与用户...
本话题主要涉及将Java、BlazeDS、Spring和JDO这四大技术组件整合到一起,并部署到移动应用(app)上。以下是对这些技术的详细说明以及整合过程中的关键知识点。 首先,Java是一种广泛使用的面向对象的编程语言,...
flex+spring+blazeds在MyEclipse下非常详细的结合配置
Flex+Spring+Hibernate示例是一种常见的企业级应用架构,它结合了Adobe Flex前端技术、Spring后端框架和Hibernate持久层框架,以构建高效、灵活且易于维护的Web应用程序。在这个示例中,开发者可能已经展示了如何...
Flex+Spring+Hibernate 整合是企业级应用开发中常见的一种技术栈组合,它结合了Flex前端的富互联网应用程序(RIA)开发能力、Spring框架的依赖注入和事务管理功能,以及Hibernate持久化框架的数据库操作便捷性。...
标题中的“flex+spring+blazeds消息推送”是指在开发富互联网应用程序(RIA)时,采用Adobe Flex作为前端UI框架,Spring作为后端服务层框架,BlazeDS作为数据通信中间件,实现服务器到客户端的消息实时推送功能。...
### Flex4.5 + Java + Spring + BlazeDS 通信整合详解 #### 一、概述 在现代企业级应用开发中,前后端分离架构已经成为主流趋势之一。本文将详细介绍如何使用Flex 4.5、Java、Spring框架以及BlazeDS进行前后端之间...
【标题】"Flex4.X+BlazeDS+Spring3实战开发在线书店四"涉及的核心技术栈是Adobe Flex 4.6、BlazeDS、Spring 3框架以及Java相关的JPA和Hibernate,配合MySQL数据库实现一个在线书店的完整系统。下面将详细阐述这些...
Flex4、Spring、Hibernate 和 BlazeDS 是开发富互联网应用程序(RIA)时常用的一组技术栈。这个登录示例展示了如何将这些技术结合使用,构建一个完整的客户端-服务器交互系统。 Flex4 是 Adobe 引入的一个 Flex ...
《Flex4+Spring+BlazeDS整合技术详解》 在当今的Web开发中,富互联网应用程序(Rich Internet Applications,简称RIA)已经成为一种趋势,而Flex作为Adobe提供的RIA开发框架,结合Spring的优秀企业级服务管理和...
Flex4、Spring、Hibernate 和 BlazeDS 是开发企业级富互联网应用程序(Rich Internet Applications,RIA)时常用的技术栈。这个组合提供了强大的前后端交互能力和数据管理功能。以下是对这些技术及其在登录示例中的...
在本课程中,我们将深入探讨如何使用Flex 4.6、BlazeDS、Spring 3 和其他相关技术来构建一个实际的在线书店应用。Flex 4.6 是Adobe Flex框架的一个重要版本,它提供了强大的富互联网应用程序(RIA)开发工具,使...
最简单的BlazeDS实现flex与java通信..无积分下载...最简单的BlazeDS实现flex与java通信..无积分下载...最简单的BlazeDS实现flex与java通信..无积分下载...最简单的BlazeDS实现flex与java通信..无积分下载...最简单的...