最近发现dwr出了2.0版本,里面提供了与目前一些主流框架的整合,如Spring,JSF,Hibernate,Struts1,Webwork等,但Struts2.0还没有提供,由于现在的项目我们采用的是Struts2.0,所以参考dwr与webwork的整合代码,修改完成了
dwr与Struts2的整和代码
1、首先下载Dwr2的源代码,将 org\directwebremoting\webwork下的类拷出来,放到 新建的一个包
比如 org.dwr.struts2 里,接下去就可以去修改里面的代码,
将类的引用都修改为从struts2的包中引用。
2、接下去关键是修改 DWRAction.java这个类
在该类中 比较特殊的是
com.opensymphony.webwork.dispatcher.DispatcherUtils 对应的struts2中的 org.apache.struts2.dispatcher.Dispatcher这个类
ServletActionContext.WEBWORK_VALUESTACK_KEY 对应 ServletActionContext.STRUTS_VALUESTACK_KEY
3、修改里面的 private DWRAction(ServletContext servletContext) 构造函数为
然后修改protected ActionInvocation invokeAction 方法 将第126行的代码
替换为以下代码
最后将 protected void prepareContinuationAction(HttpServletRequest request, Map extraContext)
里的代码都注释掉 就可以了
4,修改 DWRActionUtil.js文件将里面的webwork字样都替换为 struts2,也可以不用修改,不过觉得不爽就是了
然后就可以按照与webwork整和的方式配置dwr.xml就可以了
<init-param></init-param>最后有一点很重要,就是在 web.xml文件中配置DwrServlet 的时候一定要加上
<param-name></param-name> exposeInternals
<param-value></param-value> true
这个参数,否则生成的 DWRAction.js 这个文件将不存在 DWRAction.execute(actionObj, params, callbackObj) 这个函数,这个问题折磨了我近半天的时间啊.
如果需要可以提供代码上来,不过最好还是建议大家亲自去修改一下比较好.