(老的 已停止跟新了 ) 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" javas
<param name="beanName" value="DDataAction"/>
<include method="getDData"/>
</create>
</allow>
<signatures>
<![CDATA[
imp
]]>
</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
这个是异步方法,这样写如果对,那不成了同步了?
正确的是使用回调函数!(里面的da
Tester.TestDWR(function(da
// do some thing;
});
如果有参数:
Tester.TestDWR(xxxxx,xxxxxx,xxxx,function(da
//do somthing;
});
说了这么久,jquery还没出场...
其实我非常不喜欢DWR那个 uitl.js
功能相对jquery来说,非常逊色...
所以我的项目都没有加入DWR的 uitl.js ,用jquery来取代
(别一起加,$()这个函数会冲突的)
使得页面的操作更强悍!
哎,我也郁闷了超久...
写给喜欢SSH、jquery和DWR的人
联系客服