| Denny's profileJava DreamsBlogLists | Help |
|
|
November 24 让GWT的FlexTable支持双击(double click)Each event has a set of browser events that fires it. For example take a look at the source of the HTMLTable Class in the gwt-user jar. It public HTMLTable() { Basically, it is "sinking" only the ONCLICK event, and will ignore all http://code.google.com/webtoolkit/documentation/com.google.gwt.user.c... So, for example, if you wanted the table to respond to ONDBLCLICK use (let's say FlexTable), so you would make the class: public class HappyTable extends FlexTable { } What this code is doing, is telling the table to react to click, double click, and key press events. In the same code you would create an public void onBrowserEvent(Event event) { } } Because I was doing a variety of things with the table I created my own listener interface, and listener collection which included double keys): public interface HappyTableListener extends TableListener{ public void onCellDblClicked(SourcesTableEvents sender, int } public class MyTableListenerCollection extends Vector { public void fireCellClicked(SourcesTableEvents sender, int row, public void fireCellDblClicked(SourcesTableEvents sender, int public void fireUpKey(SourcesTableEvents sender) { October 25 小试GWT当gwt发布的时候我就初略的看了gwt的文档。当时没有在注意这个东西。当自己经过ajax, javascript洗礼后,蓦然想试试gwt这个东西。原卷了javascript的开发效率(虽然FF 有firebug, IE下面有VS)。我也不确定gwt是否会提高开发效率(我也没有用gwt做过项目),但是就评google的技术,而且可以用java去写页面代码。 我觉得有必要试试。 发了些时间看了gwt的Getting started guide 和 Develop guide 这个写得还是非常简单明了的。gwt会把你写的这些client java代码编译成html和js。应该大部分都是js吧。 在实践Reomte produce call 遇到的一个问题, 我把 MyService.java MyServiceImpl.java, MyServiceAsync.java都放在了com.dengyin.client包中,然后程序运行的时候老是会出现"com.google.gwt.user.server包找不到的错误", 但是程序运行是正常的。但是classpath中确实有MyServiceImpl这个类,后来在gwt develop forum 找到答案。 问题原因应该是gwt在真正运行前会先独立的编译com.dengyin.client包下的所有的类。但在编译的时候是不会把com.google.gwt.user.server中的类include进来。但是MyServiceImpl继承了RemoteServiceServlet,RemoteServiceServlet是在com.google.gwt.user.server包里面的,所以会发生这个问题。其实想想也就知道gwt为什么强制用户要有client这个包的原因了, 所有在client包里面的类都不应该跟Server端的有关系,在这个包里面的所有类应该仅仅是跟界面有关系。解决办法是把MyServiceImpl移到com.dengyin.server包里面。 August 03 JSON RPC call remote methods in a Java Application Server, 轻松实现ajax特性。JSON RPC JAVA 使在javascript中直接调用Java Class,而且可以hand到Java Class的返回值。然后你可以用返回的值去填充Html。 JSONRPCBridge 这个是连接JSONRPC Client和我们Server端的桥梁,我们需要把我们想要调用的Server端的OBject注册到Bridge,在应用程序中我们通常注册到JSONRPCBridge.getGlobalBridge()中, 这是一个单例,我们程序都share这个类,还有一种做法是每次请求都create一个JSONRPCBridge然后把这个放到session,单我觉得没有必要这样做,直接用JSONRPCBridge.getGlobalBridge()就行了。 JSONRPCBridge.getGlobalBridge().registerObject("myObject", myObject); 注册之后我们就能在client使用javascript调用这个myObject了。 var jsonrpc = new JSONRpcClient("/webapp/JSON-RPC/");jsonrpc.myObject.echo("hello"); jsonrpc.test.echo(cb, "hello"); 我们可以在cb函数中多返回值result进行处理。 其实JSON RPC JAVA的运行原理还是比较容易理解的,把需要调用的对象注册到JSONRPCBridge中,然后JSONRpcClient使用XMLHTTPRequest发送一些规则信息到JSONRPCServlet,JSONRPCServlet根据那些规则然后去调用注册到JSONRPCBridge中对象的方法,然后在把返回值response给JSONRpcClient,然后你就可以调用cb函数去处理其中的result了。但是我们知道这里的result已经是javascript中对应的对象了 int, array。。JSON RPC JAVA是怎样处理的呢?com.metaparadigm.jsonrpc.JSONSerializer com.metaparadigm.jsonrpc.Serializer 他们负责把一些规则的string在javascript中转换成在java中使用的对象,把一些java对象转换成javascript中的对象。JSON RPC JAVA中内置了一些Serializer。请看JSONSerializer.registerDefaultSerializers()方法。 public void registerDefaultSerializers() 现在项目中是把JSON RPC JAVA注册一些由Spring管理的对象。这样其实我们就需要在Spring注册ApplicationContext到ServletContext后再把里面的一些对象注册到JSONRPCBridge.getGlobalBridge(), 然后我们就可以在任何的html页面中调用那些对象。 April 10 重拾AJAX IN ACTION.还是应该认真看看Ajax in action这本书. 自己应该认真学习学习javascript. 顺便下了Javascript犀牛书. 再结合Tacos的源码看看. 看看Tacos是怎么在tapestry实现的ajax组件. January 03 Ajax in action读后感(1)Ajax是2005年最流行的Java词汇之一。 它可能会引起Web的一场革命。 呵呵, 好像革命已经开始了。有了google为我们打头炮,我们应该有了保障。
看过一些Ajax的文章, 对Ajax的基本工作流程还是了解的。也做过一些Ajax的应用,用的是Tapestry和tacos4。用了Tacos4感觉不到Ajax的存在。你甚至不用碰一点Javascript的东西(确实是这样的),只能怪Tacos做得太好了。我对Javascript的认识也停留在对客户端的一些字段的验证上,我知道Javascript能做的东西远远不止这些。
前几天在晚上无意找到Ajax in action这本电子书, 迫不及待开始看这本600多页的英文书。可惜本人英文水平太低, 只能借助金山糍粑了。
看完了Part 1 Rethinking the web application。
The key elements of Ajax: Css, Javascript, DOM, XMLHttpRequest object.
这上面的四种东西对我来说基本上是盲区。 特别是Javascript,对它的语法, 语言结构, OO的特性都不了解, 所以当后面讲到对Javascript做Refact的时候, 我开始感觉有点象看天书了。我想那些Ajax的框架应该是把一些Ajax里面的通用的代码抽象出来, 做成一个通用的模块。 我想我现在应该去找本javascript语言的基础书,要不然后面肯定看不下去了。唉, 真的有点累。 |
|
|