SSH、DWR、JQuery强强联手

来源:百度文库 编辑:神马文学网 时间:2024/07/08 10:28:53
SSH整合就不说了,JQuery虽然非常强大,这回先打打下手  
(---  来自 

eMavaj的小窝

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

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

这回的主角是DWR !

嘿嘿~

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

一个要人命的错误!

我就贴个代码吧:

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

web.xml配置

...


   org.directwebremoting.servlet.DwrListener
 

...


  dwr-invoker
  org.directwebremoting.servlet.DwrServlet
  
   debug
   true
  

  
   
    initApplicationScopeCreatorsAtStartup
   

   true
  

  
   crossDomainSessionSecurity
   false
  

  
   exposeInternals
   true
  

  1
 

 
  dwr-invoker
  /dwr/*
 

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

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

 

DWR配置


 

   //这里可能你没见过,converter="hibernate3"
   
   cript="ddataAction">
    
    
   

 
 
       import java.util.Map;
   ]]>
 

这个配置(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的人