本h对dwr 中文文关于dwr.xml做的一个整?Ua体力z,有用得着的朋友别忘顶一下,留个联系方式一起交学习! dwr.xml是DWR的配|文件。默认情况下Q应该把它放到WEB-INF目录(web.xml的目??/p> 创徏dwr.xml文gdwr.xml文g的结构如? <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"><dwr> <!-- init is only needed if you are extending DWR --> <init> <creator id="..." class="..."/> <converter id="..." class="..."/> </init> <!-- without allow, DWR isn't allowed to do anything --> <allow> <create creator="..." javascript="..."/> <convert converter="..." match="..."/> </allow> <!-- you may need to tell DWR about method signatures --> <signatures> ... </signatures></dwr> 术语q里是一些必ȝ解的术语 - 参数会被convertedQ远EBean会被created。所以如果你有一个叫A的beanQ它有一个方法叫A.blah(B) 那么你需要一个A?strong>creator和一个B?strong>converter?/p> 一Q?lt;allow>allowD落里面定义的试DWR可以创徏和{换的cR?/p> 二:Creatorsdwr.xml文g中的create元素的结构如下: <allow> <create creator="..." javascript="..." scope="..."> <param name="..." value="..."/> <auth method="..." role="..."/> <exclude method="..."/> <include method="..."/> </create> ...</allow> q里的多数元素都是可选的 - 你真正必ȝ道的是指定一个creator和一个javascript名字?/p> creator属?/strong> 是必ȝ - 它用来指定用U创造器?/p>
默认情况下DWR1.1?U创造器。它们是Q?/p>
如果你需要写自己的创造器Q你必须在init部分注册它?/p>
javascript属?/strong> 用于指定览器中q个被创造出来的对象的名字。你不能使用Javascript的关键字?/p>
scope属?/strong> 非常cMservlet规范中的scope?它允怽指定q个bean在什么生命范围。选项?application", "session", "request" ?page"。这些值对于Servlet和JSP开发者来说应该相当熟悉了?/p>
scope属性是可选的。默认是"page"。如果要使用"session"需要cookies。当前的DWR不支持ULR重写?/p>
param元素 被用来指定创造器的其他参敎ͼ每种构造器各有不同。例如,"new"创造器需要知道要创徏的对象类型是什么。每一个创造器的参数在各自的文中能找到。请查看上面的链接?/p>
include和exclude元素 允许创造器来限制类中方法的讉K。一个创造器必须指定include列表或exclude列表之一。如果是include列表则暗C默认的讉K{略?拒绝"Q如果是exclude列表则暗C默认的讉K{略?允许"?/p>
例如要拒l防范除?em>setWibble()以外的所有方法,你应该把如下内容d到dwr.xml中?/p>
对于加入到create元素中的cȝ所有方法都是默认可见的?/p>
auth元素 允许你指定一个J2EE的角色作为将来的讉K控制? new创造器在DWR中已l默认声明了Q?strong><creator id="new" class="uk.ltd.getahead.dwr.create.NewCreator"/> q个创造器通过c默认的够早函数创造对象实例。用new创造器有一些好处: 你可以通过下面的方式用new创造器来创造远E调用BeanQ?/p>
q些代码?java.util.Date 映射成JavascriptQƈ且命名ؓBlahQ所以在Javascript中当你调用Blah.toString(reply) 那么一个新?java.util.Date ׃通过默认的构造函数创造出来, 然后 toString() Ҏ被调用, 然后l果数据q回lreplyҎ(在这个例子中date是字W串格式)?/p>
none'创造器不创ZQ何对?- 它会假设你不需要创建对象。这有可能是对的Q有两个原因?/p>
你可能在使用的scope不是"page"(看上?Qƈ在在前面已经把这个对象创建到q个scope中了Q这时你׃需要再创徏对象了?/p>
q有一U情冉|要调用的Ҏ是静态的Q这时也不需要创建对象。DWR会在调用创徏器之前先查一下这个方法是不是静态的?/p>
对于上诉两种情况Q你仍然需要class参数Q用来告诉DWR它是在操作的对象cd是什么?/p>
scripted创造器在DWR中已l默认声明了Q?lt;creator id="script" class="uk.ltd.getahead.dwr.create.ScriptedCreator"/> q个创造器用BSF来执行脚本得到BeanQ例如: script创造器有如下参敎ͼ
要用这个创造器Q你需要把一些辅助库攑ֈWEB-INF/lib文g夹下Q?span class="nobr">BSF的jar?sup> 当一个类是用script创造出来的Qƈ且scope是session或applicationQ如果你的脚本改变,session中的cdscript中的cd不一致了。这样会出现错误。虽然web容器不用重启Q但是用户需要先d(或以某种方式清空session)Q然后再d?/p>
当clazz参数不ؓI,q且用来创造新实例QDWR单的调用 class.newInstance() Ҏ。这U方法是没问题的Q除非脚本正在用某个参数创徏一个类Q或者调用某个函数来配置q个cR?不幸的是Q每ơ请求都要重新运行scriptq成上面的问题?/p>
|