appfuse+qooxdoo+JSON-RPC-JAVA

    我在学习appfuse的时候感觉里面的内容还是有些多了,对于我们的项目需求和开发人员的工作经验都显得内容过多,所以我做了一些简化,同时也作了一些修改与扩展,其中最主要的是将DWR换为了JSON-RPC-JAVA,界面开发采用了qooxdoo。经过这些简化和扩展现在新同事对技术框架的学习速度非常快,除了qooxdoo外其他部分有一点hibernate基础的同事一天就可以掌握,这种效果我认为spring占据了最主要的功劳。

  我现在开发的两个项目都是使用qooxdoo做界面开发,也曾经打算过使用dojo,但学习的过程发现qooxdoo由于和java swing的类似性,上手更快,解决难题的速度也更快,所以后来就确定下来使用qooxdoo来作为界面开发了。而且就默认的样式来讲,qooxdoo也比dojo漂亮多了。
  对于RPC,本来我是使用的DWR,但现在改用JSON-RPC-JAVA了,不同的是这个JSON-RPC-JAVA我做了较大的改动,因为原来的JSON-RPC-JAVA远不如DWR好用。但现在在当前项目中,基本没有学习的难度和使用的难度。
    今天没时间仔细写这篇文章了,先放在这里几个图片,给大家一个直观的了解,后面我会把我们对qooxdoo的使用心得,放在文章区。

这是我给其他同事写的qooxdoo的ListView以及drag&drop的演示。两个ListView之间可以相互拖动条目,可以拖动某些条目到垃圾箱,进行删除。右下角是log区。(这里使用的是firefox)


这是项目的主界面(使用的是IE)

这是一个包含基本的CRUD操作的简单界面,其中权限是使用的Combox

posted on 2006-07-23 14:44 一农 阅读(8122) 评论(58)  编辑  收藏

评论

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-07-24 11:11 胡子鱼

不知老兄选JSON-RPC-JAVA而不选DWR的理由是什么?  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-07-24 13:44 一农

我需要对DWR来做一些改动来适应我自己的需要,但在我看懂DWR之前我看懂了JSON-RPC-JAVA(几眼就看懂了),而且能满足我的需要所以我就改造JSON-RPC-JAVA了,现在仍然使用JSON-RPC-JAVA的原因是JSON-RPC-JAVA是基于JSON-RPC的,而DWR的协议更私有一些。另外因为我使用了qooxdoo,DWR的一些js代码显的多余了,鸡肋一般。等我把JSON-RPC-JAVA再做些改动,吸收DWR的一些优点,从我的项目中抽取出来之后我会将代码公开出来。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-07-24 14:28 原创专栏 开源学习

我觉得我们更应该把精力放到业务上.
不应该放到修改框架的bug上面.

ajax,ui框架太容易让我们有修改的欲望了.  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-07-24 15:21 一农

@原创专栏 开源学习
我修改的目的就是为了让其他同事能将精力都放在业务上,而不是技术上。

“ajax,ui框架太容易让我们有修改的欲望了. ”我做编码有几年了,被震撼了几次以后,对自己使用的框架的修改欲望完全都是来源于项目的需要,特别是对今后可能升级的框架,一般不和原始作者沟通,我是不会做修改的。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-07-24 16:32 小弟

顶  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-07-29 16:36 福星高照

qooxdoo的listview能像表格一样每个单元格都有边框吗?
他的例子里面是找不到的,调试了半天listview的各项属性和函数都不成,因为国内很多地方都要求单元格有边框,如果做不到就不能用了,不过qooxdoo的界面确实不错,虽然比不上echo2,但速度快多了  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-07-29 17:29 一农

to 福星高照
ListView的单元格实际上是一个个的div拼起来的,如果需要边框就要改变这些div的border,这个需要你设置单元格的边框属性。你可以了解qooxdoo的theme,然后给你用的单元格,添加border属性就可以实现了。我试了一下可以,但如果你要对边界上的单元格和内部的单元格做区别对待的话,就要修改库的代码了。或者对所有单元格二次处理一遍。

echo2和qooxdoo的机制不一样,速度上不好比。echo2也有设计工具了,这个满方便的,但我觉着echo2的方式不太好,至少我不喜欢。qooxdoo+rpc的开发模式更像C/S方式的开发,可惜没有界面设计工具,也没有很好的javascript编辑环境,不过我们现在尽量将逻辑放在后台,所以开发起来感觉还是蛮好的,比传统的网页方式感觉还好,还快,一个同事说,使用qooxdoo+rpc感觉很多事情都很直接,而不是像使用网页刷新那样,要考虑页面数据的保留问题等等。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-07-30 18:56 hawk

你好,最近也适用了一下qooxdoo,感觉真的不错,对于面向对象开发来说,是一个不错的b/s开发模式,在这里,我想请教你一个关于listview的问题,如何才能设置交替出现行的颜色呢?谢谢!  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-07-30 22:56 一农

@hawk
这个问题我也尝试了一下,但没成功,还没时间去了解原因,你可以查看一下LisView里的几个单元格的类,可以添加字体等样式的,但我加了背景后背景的显示总是一闪一闪的。现在我用的电脑上没源码,我会抽时间研究一下这个问题,到时在此回复一下。
另外推荐firebug,可以帮助你解决这个问题。
  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-07-31 10:52 福星高照

我以前就看过listview生成的html,确实是div的,但强行更改其div的样式是不行,不知道你说的修改其theme是怎么实现的,能否给个例子,我研究qx不久,没什么经验

我以前也是用appfuse+dwr来实现ajax的,感觉还行,表格是仿照displaytag的样式,觉得不足的地方就是dwr一旦得不到数据,就会弹出对话框,很是不爽,不知道rpc是这样的吗  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-07-31 12:17 一农

@福星高照
1、你在qooxdoo-0.5.2-dos\themes\appearance\default下会看到theme.js文件,看一下代码就明白了^0^
2、JSON-RPC-JAVA在后台发生异常时,他会生成一个js的异常,你可以捕获该异常然后自行处理。如果得不到数据就直接返回你返回的内容,或为null,或为空数组等。

不知兄弟,身在何方,如果在南京,我们可以一起聊聊。我现在有个java的学习小组,大家互相学习,互相促进。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-07-31 14:11 福星高照

呵呵,我在北京,我小舅子在南京
有经验大家交流呗:)
我下载的是0.5.3没有theme.js
我弄个0.5.2来瞅瞅  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-07-31 14:54 福星高照

原来在source里面才有theme.js,确实整成功了单元格的边框,不过感觉还是没有表格的好,如果高度不合适的话,最后一行是不完整的,可能有点吹毛求疵了吧,但在实际应用中用户总是这样挑三拣四的,没辙

对了,不知道你需要不需要qooxdoo的表格排序,默认情况下,qooxdoo是不支持中文排序的,得修改它的脚本才行。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-07-31 15:20 一农

@福星高照
1、你说的情况确实是的
2、我测试的是支持中文排序的,你再检查一下看看,不过我还没来得及看0.5.3,另外如果你需要特殊的排序方法,可以自己添加排序方法,可以参考一下
QxCompare.js
3、我的gmail信箱是ynstudio,在这回帖聊天怕影响别人浏览^0^。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-01 16:56 福星高照

呵呵,增加增加人气嘛
我研究了一下qooxdoo的QxCompare.js代码,发现它不能正确的实现中文排序啊?
他的排序不是按照中文拼音实现的,是不是你改过了QxCompare的代码了?

ps:qxmenu好像不能捕获mouseleave事件,我本来想通过这个事件实现鼠标移开菜单就自动消失的,有其他方法实现吗  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-01 17:49 李孜

我最近也再看Qooxdoo,比较关心性能的问题,主要是动态创建一些控件后,如果又删除掉,好像无法使内存使用降到创建之前的水平,除非刷新页面,这点好像Bindows做的比较好。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-01 21:37 一农

@福星高照

1、我刚才看了一下确实中文排序有问题,不过我猜想原因是我使用RPC是基于utf-8的,所以排序不是按拼音。utf-8里汉字是按笔划组织的。这个问题我有时间会测一下原因,不过似乎不好解决,没办法的话,可能要交由后台处理一下了。

2、这个我没了解过,你可以参考一下menubarbutton。



@李孜
首先是remove,然后再dispose掉,不过也降不到初始值。bindows不是免费的,所以我这边没有使用。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-02 10:20 福星高照

排序跟rpc没有任何关系,qooxdoo默认用的是sort方法,这个方法的排序是按照字符集的顺序来的

关于中文排序问题,可以修改QxCompare.js,把QxCompare.byString的方法改了,倒是很简单,改成return a.localeCompare(b);

localeCompare()使用本地特定的顺序来比较两个字符串,语法如下:
string.localeCompare(target)
参数target是要与string进行比较的字符串。
如果string小于target,则localeCompare()返回小于0的数;
如果string大于target,返回大于0的数;

如果不愿意改QxCompare.byString,那么添加一个compare对象也成

关于ajax的内存问题,这属于正常情况,好像大部分(或者任何?)javascript创建对象后都不能把该对象的内存完全释放,由于ajax不刷新页面,所以内存就越用越多了
我倒是觉得不用考虑内存的问题,因为这内存是客户端的内存,和服务器没有任何关系,只要页面和服务器通讯而重新载入(比如按刷新健或f5键),就会回到原始的内存状态
除非用户长时间的停留在一个页面,而这个页面又需要定时调用ajax,才会逐渐造成内存增加(我们就碰到过这种问题,后来的解决方案是过段时间自动刷新一次)  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-02 10:21 福星高照

排序跟rpc没有任何关系,qooxdoo默认用的是sort方法,这个方法的排序是按照字符集的顺序来的

关于中文排序问题,可以修改QxCompare.js,把QxCompare.byString的方法改了,倒是很简单,改成return a.localeCompare(b);

localeCompare()使用本地特定的顺序来比较两个字符串,语法如下:
string.localeCompare(target)
参数target是要与string进行比较的字符串。
如果string小于target,则localeCompare()返回小于0的数;
如果string大于target,返回大于0的数;

如果不愿意改QxCompare.byString,那么添加一个compare对象也成

关于ajax的内存问题,这属于正常情况,好像大部分(或者任何?)javascript创建对象后都不能把该对象的内存完全释放,由于ajax不刷新页面,所以内存就越用越多了
我倒是觉得不用考虑内存的问题,因为这内存是客户端的内存,和服务器没有任何关系,只要页面和服务器通讯而重新载入(比如按刷新健或f5键),就会回到原始的内存状态
除非用户长时间的停留在一个页面,而这个页面又需要定时调用ajax,才会逐渐造成内存增加(我们就碰到过这种问题,后来的解决方案是过段时间自动刷新一次)  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-02 10:52 李孜

关于内存的问题我觉得其实还是很重要的,确实对于qooxdoo而言,在重新载入后内存会回到初始值,但是重新载入的代价是比较高的,一方面要载入近700K的js,另一方面服务器端还要考虑如何保持刷新前的状态。
昨天查看了一下bug列表,发现有个改进缺陷就是关于内存问题的,不过不知道到哪个版本可以解决
http://bugzilla.qooxdoo.org/show_bug.cgi?id=39
  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-02 11:54 一农

@福星高照
localeCompare,^0^,好

@李孜
开发人员的回复只是解释了,这个内存问题的原因,并没有说可以解决,除了刷新,我们发现只有把所有相关的页面都最小化,IE才会进行内存的释放。
你说bindows没这个问题,抽时间研究一下。不过在我们项目里,主要的内存消耗我们发现是由于window.open造成的,同一页面长时间操作变化不算太大。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-02 12:55 福星高照

js不需要每次都载入吧,缓存不能对js起作用吗?
关于刷新前的状态,该保留的还是得保留吧,如果客户手动刷新,难道不处理?
我看了看bugzilla,好像不能很快解决,说得是This is not directly a memory leak

一农
你说得太简单,menubarbutton如何用  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-03 13:37 一农

@福星高照

1、"你说得太简单,menubarbutton如何用"
因为我现在没时间去看这个问题所以我才说,让你参考一下menubarbutton,因为Qxmenubar就处理了mouseleave,来切换menu。

2、"js不需要每次都载入吧,缓存不能对js起作用吗?"
js文件是被缓存但是浏览器还是要重新把qooxdoo.js解释一遍,这个是消耗时间的,而且是明显的消耗时间。

3、"关于刷新前的状态,该保留的还是得保留吧,"
不单刷新,而且后退也应该处理的,但感觉会带来麻烦,对我做的项目来讲似乎也无必要.不知你是如何保留刷新前状态的.如果我来处理这个问题的话,我可能会模仿编辑器的方式设置一个undomanager,来处理,通过iframe来记录后退。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-03 19:57 一马

学习中...
比较深奥
请各位多指教  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-04 10:06 福星高照

menubar用的是mouseout,其实研究研究qooxdoo所有的关于menu的例子就会发现还是存在一定bug的,理论上,如果出现子菜单以后,再回到主菜单,展开的子菜单应该消失才对,但实际上,如果快速的移动,子菜单是不会消失的,这就是mouseout的问题所在。
如果在debug模式下,可以看得见,mouseout有时候的parent是menulayout,有时候是clientdocment,所以用mouseout就有这个问题  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-08 16:21 hawk

有好几天没来了,呵呵,上次我提过的QxListView交替行颜色的问题,我参考QxList例子修改了源代码,增加了一个backgroundColorUnselected属性,虽然能过出现交替颜色,目前还没有问题,不过,总感觉有些不对劲,希望,大家能提供更好的解决法案,在不修改源码的前提下实现,呵呵,另外,我还想问一个问,我用QxRequest获取数据,返回的却是中文乱码,不知道大家是怎么解决这个问题的,请指教!:)  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-08 16:25 hawk

另外我个人觉得QxListView并不适合大量数据的显示,在数据列太多情况下,滚动条的速度变的慢的难以接受,我更喜欢active_widgets的grid,如果能写一个QxGrid就好了,呵呵  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-09 09:17 sun123

不知福星高照 老兄的menu问题解决了没有,我也非常想解决这个问题,
我是因为在menu下面放了个Qxiframe,当打开menu时候,点在Qxiframe里面,menu就不会自动关上,非常麻烦。
另外,强烈建议大家搞个讨论qx的地方,上传一些例子share。
  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-09 10:04 一农

@hawk
我用QxRequest获取数据,返回的却是中文乱码,

你查一下response的header中是否有编码信息,如果没有在header中添加编码信息。

@hawk
另外我个人觉得QxListView并不适合大量数据的显示,在数据列太多情况下,滚动条的速度变的慢的难以接受,我更喜欢active_widgets的grid,如果能写一个QxGrid就好了,呵呵

是的,QxListView的效率不太好,我看到其他库的一些ListView(有的叫grid)是基于table实现的,而QxListView是单独的一个个div,在我的T42上其实运行还是满流畅的,但配置差一些的机器就明显的满了。http://www.linb.net/ 的ListView(grid)满好的可以参考一下,linb是国人开发的,不错。

@sun123
你的问题和福星高照兄的不一样,你用iframe后,就会存在这样的问题,因为菜单的显示和消失是通过感知鼠标的,但当你的鼠标进入iframe后,菜单所在的frame就无法感知鼠标了,所以也就消失不了了。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-09 10:06 一农

@sun123

另外,强烈建议大家搞个讨论qx的地方,上传一些例子share。

大家可以看看哪家论坛可以提供这个帮助,我朋友有个论坛,但其主题和这个不是很合适,虽然他们公司也是做互联网开发的。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-09 12:52 sun123

谢谢一农兄的回应
那我能不能写一个函数,通过iframe的mouse move 调用parent的函数,关闭现在打开的菜单( 如果有菜单打开的话),这个函数该怎么写呢?
如果实现鼠标移开菜单就自动消失的效果,我想我的问题也解决了。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-11 13:46 福星高照

to:sun123
研究了一下qooxdoo的代码,本来想添加mouseleave事件的,未果,是水平也不够啊时间也不多,呵呵

如果确实有隐藏菜单这种需求的话(好多客户都会提的),我想可以捕获ClientDocument的mousemove事件来实现这一功能,不能算好的想法,但确实能做到,呵呵  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-11 13:47 福星高照

我以example下的menu1.htm为例作个例子给你看看吧,供参考
把这些代码放到main函数的最后
var timer=new QxTimer(250);//设置timer的间隔
timer.addEventListener("interval", hidemenu, this);//设置timer在间隔后关闭菜单,同时停止timer
function hidemenu(o){
timer.stop();
m1.hide();//m1为主菜单
}

d.addEventListener("mousemove", dividerDragMove, this); //d为this.getClientWindow().getClientDocument();
function dividerDragMove(e){
//this.debug(e.getTarget());
var t = e.getTarget();
if (t==d && m1.isSeeable()){
timer.start();//如果菜单可见,同时鼠标位置在getClientDocument上,说明鼠标已经移开了菜单,所以启动timer
//如果d上面还放置了其他的对象,一起加上,防止移到该对象时鼠标不消失

}
e.setPropagationStopped(true);
} ;  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-11 13:52 福星高照

说老实话,其实我还是喜欢那种客户端和server端用get/post来交互的(在某些地方用用ajax去数据,我一般都用dwr),qooxdoo好像不是很直观的能实现,不过他的ui库确实还不错。
要是有个好的纯web ui库就好了,yahoo ui不怎么好看  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-11 15:47 一农

@福星高照

YUI我觉着主要是比较小,如果项目中仅仅是把特殊的WEB UI作为辅助的话,还是不错的,虽然部件还不全。而qooxdoo 700K的代码真的很头疼,有些客户的旧机器跑起来很费力。
我有时也觉着使用现在这种模式开发不如以前的直接网页get/post方便,一直感觉有些想不通,为什么会原来的模式会感觉方便,现在感觉原因是这样几个方面,1、原来的时候页面设计可以交给美工,现在自己做,2、原来html和java代码可以混合写,即jsp的方式,现在用javascript将显示和数据进行结合,使用widget还好些,如果是直接操作HTML,那就像CGI的方式了,3、javascript的编辑器比jsp的还不好。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-11 23:10 福星高照

700多k是有点多,一种办法是先下载它的源代码脚本,用demo下的demoinclude进行裁减,去掉不用的,然后找压缩工具压缩,可能会好些
  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-12 14:50 asan

我是才学这个的
我问下楼主,你的主界面上的IE中的菜单条,地址栏等是怎么去掉的????  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-14 16:32 sun123

to福星高照:
谢谢你的回答,看来要处理好这个菜单问题,还是蛮复杂的。
to一农:
我觉得你那里旧机器跑得慢,更重要的原因应该不是700k的大小(那是网络传输的问题),而是机器的性能。其实我认为那个700k的js还可以再压缩的,它内部的局部变量名都还有压缩的余地。
  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-14 16:36 sun123

to asan :
估计是一农在用户验证之后又重新打开一个窗口
:)  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-14 22:06 一农

@asan
:-)
正如sun123所说。

@sun123
我觉得你那里旧机器跑得慢,更重要的原因应该不是700k的。。。。。

是的,我的理解是对于老旧的机器,浏览器解析这700k的代码可能有些困难,而不是因为文件大而传输慢,浏览器可以缓存的,这个不是问题。多数情况下,一般的电脑运转起来还是蛮流畅的,只是一次打开一个几百个节点的树有明显的等待,这个还是可以接受的。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-15 12:39 sun123

还令我比较烦得是 qx的升级问题
我从qx 0.12 开始写些东西,慢慢跟着升到 0.14 基本上是themes里面多加了些图标和修改了些bug.也没什么。后来到0.15 一下子升到0.51 ,这下我写的东西有好多都不能用了,只有重新写过,现在又有升级到0.6的迹象,据说是加进name space 的支持。不知要不要改写我们的程序。
:(  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-16 00:52 一农

@sun123

你是在正式的项目中使用的吗,能不能详细谈一下你的想法,包括各类ajax库的比较,福星高照兄也是,抽时间写点全面一些的文字,我们也学习一下 :-) ,看看高手的想法  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-16 09:26 sun123

to 一农
其实我也没怎么用的深,只是用qx作framework,他的menu和wedget作的很漂亮,而且速度快,风格也同一,dojo有的地方比他好,象fisheye 非常cool.
,但是让我伤脑筋的是他们处理数据库应用的能力实在不行....。没办法,只能,做iframe来嵌入,这才出现了我上面的menu问题。
我在iframe里面嵌入的页面,就像c/s中的数据控件,专职来处理数据维护、录入、以及后台处理的。
我这种想法是不是土了点... :-)  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-16 12:09 一农

@sun123

1、不是很理解你的意思,你的iframe里的页面是否也是使用的qooxdoo?
2、对于数据处理来讲,我们使用QxListView来列表显示普通的数据,使用QxTree来显示具有层次关系的数据,使用QxTextField,QxComboBox等来构成Form表单,给用户输入数据,然后将这些数据组织成数据对象,使用json-rpc-java来传递为后台进行处理,官方的json-rpc-java并不好用,你可以使用dwr来完成同样的功能。我们使用QxGridLayout来对QxTextField,QxComboBox进行布局,自己写了一个FormManager的方法来对QxTextField,QxComboBox这些表单项做些辅助性的管理。最后的效果就如本文中的第三张图片一样。

不知这些是否有点用处。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-17 09:26 sun123

to 一农
1.iframe 里不用qx,是其它的js,你看,如果光用QxTextField和QxComboBox对付各种数据好像还是差一些,比如,怎么区分数据类型,数据位的长短限制。数据显示格式....等等,如果都到后台处理,就浪费资源了。就拿你的编号来说,如果数据库里是char(4),怎么限制用户输入4位呢,如果它输入4位以上怎么办呢?这些都自己写的话太累了,还有日期怎么做到yyyy/mm/dd 或yy.mm.dd等不同的格式呢?还有分页什么的。
2.你说的布局,是用脚本写出来的,还是通过什么格式化数据如xml生成出来的?
3.你说 ....然后将这些数据组织成数据对象..
具体是怎么做的?怎么区分哪些是删除,哪些是修改的数据,修改的数据又修改了哪些字段?还是你把页面上的数据都传递回去更新?  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-17 10:32 一农

@sun123

似乎你只是使用qooxdoo做外壳,多数情况下,还是使用其他的技术。

1、你的“其他的js”是什么,我很感兴趣,有这么强的功能,还是使用了一些validate框架,如struts的. 现在我都是自己手工在写js进行校验。但正在筹备给QxListView提供一些辅助功能,来达到校验的目的,同时附加增删改的通用代码,我们还在开发一个数据库管理工具,然后在此基础上,实现类似ROR的一些机制,如自动先生成一套基本的数据库管理的代码,然后项目在这些基础代码上,进行开发。

2、用脚本写的,准备用QxBuilder做,但多数页面代码并不多,大家都懒得去了解QxBuilder。不过我还是推崇QxBuilder的方式。

3、你的iframe里的内容还是使用基本的struts的方式吗,我这边因为界面全部是使用qooxdoo,所以页面不进行刷新,与后台的数据交换都是使用xmlhttpclient,但直接使用显然开发效率太低,所以使用了一些框架,原来是使用DWR,我也推荐你使用DWR,虽然我现在使用json-rpc-java,但这是经过我们改造的,在使用方便性上和DWR类似。
我不知该如何说明写点示意代码你参考一下
后台定义类
public class Foo{
public void saveObject(com.ynstudio.xxx.User user){....}
}
然后在spring里注册为id='foo'
前台页面的js
var user = new Bean('com.ynstudio.xxx.User');
user.set('id','ST001002');
user.set('name','张三');
json.rpc('foo.saveObject')(user);
  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-17 17:02 sun123

to一农
其实说起来不好意思,我基本上后台没有用到多少java,主要是用,powerbuilder来做的,先用powerbuilder做好类似bean的东西,然后服务器按照所有的menthod生成一套ejb的外壳,这样在jsp里就几乎把她当成ejb来调用。
所用的js就是sybase公司转为datawindow开发的一套js。个人觉得非常方便。
但是他还是有缺点的,就是还是使用传统的form刷新机制。

我没有用DWR,主要是java方面的功力不行。
主要用一套sack的js库,来处理ajax。基本原理应该是差不多的。

你的数据更新现在只局限于一条一条的更新吗?如果用户修改了一个listview中的若干数据,你打算如何来处理呢,是把所有的数据读回到后台去处理吗?  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-17 17:31 一农

@sun123

我们现在没有涉及到多条数据的修改,不过如果做这种功能的话,实现方法也和form刷新一样的,xmlhttprequest提交和form提交,主要就是页面是否切换,另外xhr似乎不能上传文件。
只不过如果我们做的话,就要自己想一下,如何做方便了,qooxdoo的ListView还是单薄了些,我们会再找些其它的ListView(一般其它的都叫Grid)看看。

sybase公司我总觉着他不大肆宣传自己,但他却推出很多漂亮的工具。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-08-18 09:02 sun123

to 一农
qx 的ListView 还不能 edit,active_widgets是可以的,他们的风格让我觉得是同一批人开发的。如果是qx该多好。  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-09-09 16:45 fred

请教一下,
使用qooxdoo能作到dhtmlgrid的效果吗? 是多行数据输入,修改,一次性保存?
  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-09-10 10:35 一农

@fred

你是说 dhtmlXGrid.js ?
还是其他的?
qooxdoo0.6有了table,这个table相当于一般讲的grid,
http://qooxdoo.org/demo
你可以到他的网站去看看,因为是国外的网,所以速度上要慢一些  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-10-12 16:06 stoneboy

一农:

 你好!
 
 看了你这个帖子,受益非浅!但是还是有些疑问,希望你能帮助我回答:
 
 1、Qooxdoo本质上是一组基于JS的WEB UI组件,其本身并不能异步通信,只有结合DWR才能实现异步通信,即达到调用后台数据库数据不刷新页面的效果。这个认识对吗?
2、你提到的json-rpc-java,我没接触过,我想问下它能否实现异步存取数据?
3、最后,想问一下,如果我想返回多条数据到客户端,怎么去接收。数据是以值读象数组来组织还是用List返回好呢?
改下你的例子如下:

后台定义类
public class Foo{
public void saveObject(com.ynstudio.xxx.User user){....}
public List getObjects() {...}
}

然后在spring里注册为id='foo'

前台页面的js
// 我的JS比较烂,不知道写的对不?
// 如果用json-rpc-java
var user = new Bean('com.ynstudio.xxx.User');
Var userList =json.rpc('foo.getObjects)
//怎么把 userList数据给Qooxdoo的UI组件呢?



//如果用DWR,JS脚本中又怎么实现呢?



请指教,多谢!
  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-10-12 16:09 stoneboy

一农:

你有MSN或者其他即时通工具吗?能留给我吗?  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-10-12 17:20 stoneboy

关于QooXDoo树控件的使用

有两个问题:
1、树的节点能把业务对象的ID和Name一起关联起来吗? Name用来显示,ID用来为其他查询提供依据,比如查该节点业务对象的详细信息或着查它的下级所有 节点信息.
2、如果数据量很大,比如上万,树的效率怎样?能实现动态装载下级节点吗?即每次双击某节点时再从后台取数然后生成它的下级节点,不知道一农在项目
中是怎么实现的,希望能介绍下!
  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-10-12 18:13 一农

@stoneboy
1、我认为这么理解是对的
2、3、你具体使用qooxdoo做些东西就晓的了,我还是推荐了解dwr,因为我用的json-rpc-java是经过我很多改造的,所以这里没办法讨论。dwr返回的数据也是适用的json的格式。所谓json其实很简单,http://www.json.org/,有点类似于Map,就是属性结合的表示方法。至于同步,异步,你需要了解一下xhr,本质上dwr,json-rpc-java都是基于xhr的,可以参考这个网站 http://www.xmlhttp.cn/
4、我的gmail邮箱是ynstudio

:-),希望能有点帮助

关于树,qooxdoo的效率不高,不过dojo似乎更低 :-),节点多的话,当然要动态装载了 :-)  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-10-25 13:37 一农fan

啥时候把把JSON-RPC-JAVA做的改动公开出来?说的我心神荡漾!  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-10-25 13:39 一农fan

请问您是如何分包和加载js。
  回复  更多评论   

# re: appfuse+qooxdoo+JSON-RPC-JAVA 2006-10-25 15:17 一农

@一农fan
1、其实我修改的主要是其中的JSONRPCBridge类,把根据className获取对象的方法和spring结合起来而不是像原来那样从session中获取。我贴出代码没有任何意义,因为这个修改很细微,只要你了解了json-rpc-java的JSONRPCBridge逻辑,自然而然就明白了。我就不想献丑了,如果今后我把代码优化一下,自己能满意一点,或许我会贴出来,提高一下自己的抗击打能力。
2、你读一下dojo的代码就明白了,比我做的方式对你更有益处。

高手开源的东西太多了,你有空余时间的话,可以花时间看看,我这个业余选手的东西实在是污染视听,我做这个blog的目的是为了看看是否有公司需要类似的技术,招我做做兼职 :-)。
最近在找工作,被笔试,面试,烤的焦头烂额,我本科不是学计算机的,现在是读电子研,所以数据结构等抱抱佛脚学的一点东西,去考试真的满痛苦。如果你是在校生,或想到一些大公司,不要花太多的时间去学这类技术,把数据结构,离散数学多学学,多练练。  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

公告

南京 java辅导班 约等于免费 详见yuqiaotech.com

导航

<2006年7月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

统计

常用链接

留言簿(10)

随笔档案

文章分类

文章档案

相册

搜索

最新评论

阅读排行榜

评论排行榜