轉(zhuǎn)自于:http://swimren.javaeye.com/blog/98186
最近發(fā)現(xiàn)dwr出了2.0版本,里面提供了與目前一些主流框架的整合,如Spring,JSF,Hibernate,Struts1,Webwork等,但Struts2.0還沒(méi)有提供,由于現(xiàn)在的項(xiàng)目我們采用的是Struts2.0,所以參考dwr與webwork的整合代碼,修改完成了 1、首先下載Dwr2的源代碼,將 org\directwebremoting\webwork下的類拷出來(lái),放到 新建的一個(gè)包 3、修改里面的 private DWRAction(ServletContext servletContext) 構(gòu)造函數(shù)為 java 代碼
然后修改protected ActionInvocation invokeAction 方法 將第126行的代碼 java 代碼
替換為以下代碼 java 代碼
最后將 protected void prepareContinuationAction(HttpServletRequest request, Map extraContext) 4,修改 DWRActionUtil.js文件將里面的webwork字樣都替換為 struts2,也可以不用修改,不過(guò)覺(jué)得不爽就是了
這個(gè)參數(shù),否則生成的 DWRAction.js 這個(gè)文件將不存在 DWRAction.execute(actionObj, params, callbackObj) 這個(gè)函數(shù),這個(gè)問(wèn)題折磨了我近半天的時(shí)間啊. 如果需要可以提供代碼上來(lái),不過(guò)最好還是建議大家親自去修改一下比較好. |
評(píng)論 共 5 條 | 發(fā)表評(píng)論 |
其實(shí) ,Servlet那層,可以扔掉了。 不要在再Web層還用 XX+XX。 |
對(duì),采用dwr,可以直接去訪問(wèn)業(yè)務(wù)層,不用采用Struts 之類的,但有些時(shí)候還需要控制層,在個(gè)別的地方的使用dwr去調(diào)用,兩種結(jié)合著就比較好了. |
請(qǐng)教樓主: 1.我現(xiàn)在在試用AppFuse 2.0-M5,我嘗試了它自帶的DWR 2.0.1和Struts 2.0.6,在客戶端能夠正確地調(diào)用Struts action的方法并返回?cái)?shù)據(jù)。我看了DWRAction.java的代碼,確實(shí)是象你提到的改動(dòng)前的樣子,但我沒(méi)做任何改動(dòng)。我想問(wèn)一下你改動(dòng)這個(gè)類的目的是什么呢?不改動(dòng)會(huì)有什么問(wèn)題呢? 2.你在文中提到:
引用
最后有一點(diǎn)很重要,就是在 web.xml文件中配置DwrServlet 的時(shí)候一定要加上
exposeInternals true
我的web.xml沒(méi)有設(shè)置這一項(xiàng)。如果沒(méi)有生成DWRAction.execute(actionObj, params, callbackObj) ,會(huì)有什么問(wèn)題呢? 附上我的例子作為分析參考: 代碼
其中InquiryMasterAction的getDetailsByMasterId方法的Java代碼為: 代碼
生成的inquiryMasterAction.js的內(nèi)容: 代碼
在JSP頁(yè)面中只需要調(diào)用: 代碼
|
to movingboy : 我沒(méi)有具體的去研究 AppFuse 2.0-M5的源碼,不過(guò)從你的描述中可以看出來(lái),你的這種配置方式也是可以正常工作的。 代碼
這種方式去調(diào)用就可以了,這個(gè)方法最終會(huì)去調(diào)用 DWRAction.js里的execute()方法。這種方式是保留了Action的原汁原味,按照Struts2的機(jī)制去處理的。 具體的你可以參考一下 dwr2的文檔中 與webwork整和的部分或著參考下面的 http://wiki.javascud.org/display/dwrcn/WebWork+Integration?focusedCommentId=917506 也可以 |