WebWork/Struts 2
DWR也提供与OpenSymphony( www.opensymphony.com/webwork )所开发的WebWork框架的集成。借助于这种支持,可以远程访问自己的WebWork Actions,就像任何其他类一样。
请注意,WebWork现在已经成为Struts 2,并且从根本上看,这种集成应该是相同的(尽管现在xwork.xml指向struts.xml,但还是存在其他一些细微的差别)。
使用DWR的这种特性需要两步,但是没有一个步骤与以前看到的方法差别很大。首先,需要在web.xml文件中创建一些新的条目,类似于:
这使得DWR可以处理所涉及的多种对象类型。同样,如果自己的Action调用返回Action实例,而不是更典型的纯文本,则还需要在dwr.xml文件中添加一条配置信息:
match属性的值是会被返回的Action实例。
一旦完成上述配置,就需要把常见的DWR JavaScript代码导入到执行Actions的JSP文件中。除此之外,还需要导入DWRActionUtil.js文件,它是需要与WebWork Actions一起工作的帮助代码。
调用Action非常类似于调用其他任何远程类,差别是它通过DWRActionUtil对象实现,如下所示:
这个调用的参数说明如下。
id。这个参数可能是Action URL,通常使用.action扩展名。也可能是一个action- DefinitionObject JavaScript对象。在这种情况下,这个对象必须指定如下域:namespace(xwork.xml文件中Action的命名空间)、action(xwork.xml文件中Action的名字)、executeResult(可能是true或者false,说明如果方法调用返回一个Action实例,是直接返回这个实例,还是执行这个实例)。
params。如果不需要传递参数,这是一个空对象{}。这个参数也可能是一个域的ID(其值会被传递给Action调用);也可能是一个表单的ID,这时候这个表单的所有值都会被传递。请注意,如果xwork.xml文件中的配置使用ParameterInterceptor,那么Action会完全使用传入值进行初始化,好像通过WebWork被调用一样。
callback。这是DWR中到处可见的回调函数。