谈谈dwr的ajaxreverse功能
dwr的反推非常简单,在dwr.xml声明了提供反推功能的java类就可以.我举个例子就叫做dwrReverse
吧。我还使用了spring框架,所以这里dwr里设置create为spring就让spring管理了.
dwr通过javascript开放了dwrReverse的接口,这个在页面就可以直接使用了。这个和普通的使用没有什么区别。
如果要页面使用反推功能,关键的是dwr的配置文件里,将ajaxreverse的选项设置为true。并且在页面里init里就写入ajaxreverseallowed设置为true。这样设置后页面就访问dwr开放的js接口就会登记到dwr维护的一张列表里。
当然在dwrReverse的函数里就可以使用这些可以反推的页面了。Dwr.WebContext是一个变量可以保存当前所有使用该反推功能的页面。这句话很重要,因为只有使用反推功能的页面才会进入该列表。
什么意思呢,也就是说,即使调用了dwrReverse页面的函数也是不能进入该列表的,必须调用反推接口才行。在调试这个功能的时候调试我很久,我的程序里使用了WebContext.getAll!=null进行判断,原来我的判断是使用带了带有反推功能的类那么就应该进入该列表,最终才定位必须是函数.希望同样困惑的朋友可以省一些时间.
比如dwr自带的chatExample,必须先使用聊天框发言一次才可以,相当于注册,并且这个连结是有时间的,这个连接有效时间也是在dwr,xml里设置的,具体可以参见dwr中文手册.
最后要说一下,dwr的反推功能支持最好的是FF,相比之下IE 6\7,chrome的支持效果都不太好.刷新时有时无,在linux和
xp下都是这样,其他系统没有试过.