??xml version="1.0" encoding="utf-8" standalone="yes"?>
1.. 需要jdom.jar和bsf.jar,否则无法跟spring整合.
2.. dwr生成的javascript函数?x)自动加一个回调函数的参数,如原来的函数是checkExist(String name),那么生成的javascript函数是checkExist(callbackFunc,String name).
3.. 注意回调函数只能有一个参?是服务器的q回?如function(messFromServer),q里messFromServer是该操作在服务器上的q回?
4.. util.js里面有很多有用的Ҏ(gu),最好熟(zhn)一?
5.. convertq不是必ȝ,只有你的函数需要传递非基本数据cd的数据时需要此?
我需要增强的,dom操作,javascript
DWR collection converter 使用摘要
<convert converter="collection" match="java.util.Collection"/>但是不知道怎么用,?Java Object Q-> Javascript Object 问题不大Q有现成的例子可供参?Q)(j)Q就?Java function q回一个CollectionQ看了一下返回值在 javascript 中是的Ş式是一个object Array然后?javascript 取出每一?Object?property (eg. object.id , objecct.name....)
下面是一个应用实例-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-DWR.XML------------------------------
<dwr>
<allow>
<convert converter="bean" match="dwr.sample.Apartment"/>
<create creator="new" javascript="ApartmentDAO" class="dwr.sample.ApartmentDAO">
<include method="findApartments"/>
<include method="countApartments"/>
<include method="addApartment"/>
<include method="addApartments"/>
<include method="addApartments2"/>
</create>
<create creator="spring" javascript="ApartmentDAO" >
</create>
</allow>
<signatures>
<![CDATA[import java.util.*;
import dwr.sample.*;
ApartmentDAO.addApartments(List<Apartment>);
ApartmentDAO.addApartments2(Map<String,Apartment>);
]]>
</signatures>
</dwr>
如果传如 java 的代码的参数 是一?Collection Q则要稍微处理以下,先照上面 黑体?的声明以下传入的Collection的内部包含的cȝ 切cdQ以?Java 代码 作出判断Q如果传入的参数是一?ListQ则?Javascript 中把q些对象攑֜ 一个Array中就可以了,如果传入的参数是一个MapQ原来以为是一?二维?Arrayp了,但是试过之后发现不行Q看了一下例子,原来要用这UŞ式:(x) var depts={ "dept1":new department("2", "200"),"dept2":new department("3", "300") };q样传进M?Java ׃(x)Ҏ(gu) q些 数据构徏 一个MapQ?
最q发现dwrZ2.0版本Q里面提供了与目前一些主框架的整合Q如Spring,JSF,Hibernate,Struts1,Webwork{,但Struts2.0q没有提供,׃现在的项目我们采用的是Struts2.0Q所以参考dwr与webwork的整合代码,修改完成?br>dwr与Struts2的整和代?/font> 1、首先下载Dwr2的源代码Q将 org\directwebremoting\webwork下的cL出来Q放?新徏的一个包 3、修攚w面的 private DWRAction(ServletContext servletContext) 构造函Cؓ(f) java 代码
然后修改protected ActionInvocation invokeAction Ҏ(gu) 第126行的代码 java 代码
替换Z下代?/font> java 代码
最后将 protected void prepareContinuationAction(HttpServletRequest request, Map extraContext) 4Q修?DWRActionUtil.js文g里面的webwork字样都替换ؓ(f) struts2,也可以不用修改,不过觉得不爽是?br> 然后可以按照与webwork整和的方式配|dwr.xml可以了
q个参数,否则生成?DWRAction.js q个文g不存在 DWRAction.execute(actionObj, params, callbackObj) q个函数,q个问题折磨了我q半天的旉? 如果需要可以提供代码上?不过最好还是徏议大家亲自去修改一下比较好. |
评论 ?5 ? | 发表评论 |
其实 QServlet那层Q可以扔掉了?/p> 不要在再Web层还?XX+XX?/p> |
?采用dwr,可以直接去访问业务层,不用采用Struts 之类?但有些时候还需要控制层,在个别的地方的用dwr去调?两种l合着比较好? |
hgQ?/p> 1.我现在在试用AppFuse 2.0-M5Q我试了它自带的DWR 2.0.1和Struts 2.0.6Q在客户端能够正地调用Struts action的方法ƈq回数据。我看了DWRAction.java的代码,实是象你提到的改动前的样子Q但我没做Q何改动。我想问一下你改动q个cȝ目的是什么呢Q不改动?x)有什么问题呢Q?/p> 2.你在文中提到Q?/p>
引用
最后有一点很重要,是?web.xml文g中配|DwrServlet 的时候一定要加上
exposeInternals true
我的web.xml没有讄q一V如果没有生成DWRAction.execute(actionObj, params, callbackObj) Q会(x)有什么问题呢Q?/p> 附上我的例子作ؓ(f)分析参考:(x) 代码
其中InquiryMasterAction的getDetailsByMasterIdҎ(gu)的Java代码为:(x) 代码
生成的inquiryMasterAction.js的内容:(x) 代码
在JSP面中只需要调用:(x) 代码
|
to movingboy : 我没有具体的ȝI?AppFuse 2.0-M5的源码,不过从你的描qC可以看出来,你的q种配置方式也是可以正常工作的? 代码
q种方式去调用就可以?q个Ҏ(gu)最l会(x)去调?DWRAction.js里的execute()Ҏ(gu)。这U方式是保留了Action的原汁原呻I按照Struts2的机制去处理的? 具体的你可以参考一?dwr2的文档中 与webwork整和的部分或着参考下面的 http://wiki.javascud.org/display/dwrcn/WebWork+Integration?focusedCommentId=917506 也可?/td> |
其实
DWR
已经考虑好了Q在
DWR1.1
中可以利?/span>
uk.ltd.getahead.dwr.WebContext
?/span>
uk.ltd.getahead.dwr.WebContextFactory
来和
Http Servlet
的标准对象进行通信Q包括:(x)
l HttpServletRequest
l HttpServletResponse
l HttpSession
l ServletContext
l
ServletConfig
具体调用的方法如下:(x)
function addReply(frm){
。。。?/p>
//利用dwr自动?/span>frm提交的数据植?/span>js对象,
//DWRUtil.getValues的用见我的上篇帖子
var commentForm = DWRUtil.getValues(frm);
//调用服务器端的服?/span>
CommentService.writeComment(writecallback,commentForm );
。。。。?br />}
注意以下几点
1Q传l服务的js对象最好严g领域对象对应不能有key?"的属性否则会(x)报错,可以有多余?的属性,但后C(x)出现一些烦(ch)人日志信息告诉你无法匚w
2Q对于领域对象来_(d)dwr在{换时?x)遍历所有getҎ(gu)Q根据传入的js对象属性进行反不好了,Z么要遍历getҎ(gu)Q真是奇怪啊Q,所以注意你的getҎ(gu)要健壮避免后C(x)出很多日志信息汇报空指针之类的错?br />
3Q关于本C递的js对象Q必ȝ构与领域对象对应。从抽象的角度看多数情况领域对象完 ?全可以用数组和hashl构描述Q何冉|谓的对应只是属性的对应Q所以合理的使用Array和Object完全可以实现js对象和领域对象的匚w
4Q必配|合适的转化?/span>?/span>dwr知道如何你传入?/span>js对象转化为领域对?/span>
5Q用DWRUtil.getValues(frm)或者DWRUtil.getValues(obj)攉提交的数?/span>
方式的区别详见该文上半部?/p>