打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SSH、DWR、JQuery强强联手
SSH整合就不说了,JQuery虽然非常强大,这回先打打下手  
(---  来自 

eMavaj的小窝

(老的 已停止跟新了  ) http://emavaj.blog.163.com/

(新博客)http://emavaj.javaeye.com/

这回的主角是DWR !

嘿嘿~

基本的东西我就不说了,入门例子到处都是,我讲的是一个DWR和Hibernate一起的时候

一个要人命的错误!

我就贴个代码吧:

我得DWR是最近版3.x ,就一个包dwr.jar

web.xml配置

...

<listener>
   <listener-class>org.directwebremoting.servlet.DwrListener</listener-class>
 </listener>

...

<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
  <init-param>
   <param-name>debug</param-name>
   <param-value>true</param-value>
  </init-param>
  <init-param>
   <param-name>
    initApplicationScopeCreatorsAtStartup
   </param-name>
   <param-value>true</param-value>
  </init-param>
  <init-param>
   <param-name>crossDomainSessionSecurity</param-name>
   <param-value>false</param-value>
  </init-param>
  <init-param>
   <param-name>exposeInternals</param-name>
   <param-value>true</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
 </servlet-mapping>

上面的配置可能多出了几个属性网上的教程没有,没关系,这个时候要不要都没问题

(反ajax的时候,上面几个都要加上,而且还有加activeReverseAjaxEnabled )

 

DWR配置

<dwr>
  <allow>

   //这里可能你没见过,converter="hibernate3"
   <convert match="com.cs4m.beans.*" converter="hibernate3"/>
   <create creator="spring" javascript="ddataAction">
    <param name="beanName" value="DDataAction"/>
    <include method="getDData"/>
   </create>
  </allow>
  <signatures>
   <![CDATA[
    import java.util.Map;
   ]]>
  </signatures>
</dwr>

这个配置(signatures是说转换类型的时候提示Java类型)就是关键,

通常SSH整合之后,很多想用DWR,是为了配合Hibernate的查询取得一定数据

但是一般的入门都只有 converter="bean" 这样只能让DWR转换普通Bean

而一旦bean被Hiberante管理之后,应该是说在Hibernate查询出来,

也就是在session状态的bean是不一样的,如果只用converter="bean"来转换

会出现以下异常:

No converter found for XXXX

解决方法就是,把转换器converter换成 hibernate3 (我感觉应该是dwr 3.x 才有这个)

就不会出现那个异常了。

(哦,忘了说了,很多人会把converter和match属性搞错...这个更郁闷的)

 

在前台,除了加入必要的js之外,

写函数的时候,也是搞死很多人的

比如说:(TestDWR方法是服务器公开方法,js名为 Tester ,返回一个user)

var  user = Tester.TestDWR();

很多人因为Java习惯,就这样写,结果搞死去都是 undefined

这个是异步方法,这样写如果对,那不成了同步了?

正确的是使用回调函数!(里面的data才是Java方法的返回值!!!!)

Tester.TestDWR(function(data){

    // do some thing;

});

如果有参数:

Tester.TestDWR(xxxxx,xxxxxx,xxxx,function(data){

    //do somthing;

});

 

说了这么久,jquery还没出场...

其实我非常不喜欢DWR那个 uitl.js

功能相对jquery来说,非常逊色...

所以我的项目都没有加入DWR的 uitl.js ,用jquery来取代

(别一起加,$()这个函数会冲突的)

使得页面的操作更强悍!

 

哎,我也郁闷了超久...

 

写给喜欢SSH、jquery和DWR的人

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
关于DWR2.0的配置问题
一份完整的Spring Hibernate DWR extJs的生成树及下拉comBobo...
使用annotation注解,整合DWR3 + Spring3 + Hibernate3
DWR3实现服务器端向客户端精确推送消息
使用DWR2异步实现服务器推技术 - 网络基础\学院\技术 — C114(中国通信网)
Filter 过滤器
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服