通过DWR来调用WebWork的Action
WebWork支持在DWR2.0m3以后才有。
要可以通过DWR调用WW的Action,要做两件事。
步骤1: 配置dwr.xml
你必须在dwr的配置文件中加入这样的配置:
<create class="code-quote" creator="&lt;span"></create>"none" javascript="DWRAction">
"class" value="org.directwebremoting.webwork.DWRAction"/>
<include class="code-quote" method="&lt;span"></include>"execute"/>
<convert class="code-quote" converter="&lt;span"></convert>"bean" match="org.directwebremoting.webwork.ActionDefinition">
"include" value="namespace,action,method,executeResult" />
<convert class="code-quote" converter="&lt;span"></convert>"bean" match="org.directwebremoting.webwork.AjaxResult"/>
这样你AjaxWebWork Action调用返回一个action实例(而不是文字)。然后你必须包括action对象的转换器定义(package级别或单独action)。
<convert class="code-quote" converter="&lt;span"></convert>"bean" match="<your_action_package></your_action_package>.*"/>
步骤2: 在JSP中导入脚本
下面这些代码开启DWR调用Action的功能。你还要导入DWRActionUtil.js脚本(在你的web脚本路径中)
使用
像这样在JS中调用Action:
DWRActionUtil.execute(id, params, callback [, displayMessage]);
id 参数可以是下面这些:
- actionUri: 要调用action的URI(没有 .action). 例如:
DWRActionUtil.execute('/ajax/TestFM', 'myform', 'doOnTextResult');
- actionDefinitionObject: 在xwork.xml中定义的action对象. 必须指定下面的内容:
- namespace: xwork.xml中action的名称空间
- action: xwork.xml中action的名字
- executeResult: true|false (是否执行action的结果, 如果false直接返回action实例)
例如:
DWRActionUtil.execute({
namespace:'/ajax',
action:'TestJS',
executeResult:'true'
}, 'data', doOnJSResult, "stream...");
params 必须是这些:
- emptyParams: 传递{}忽略任何参数。
例子:
DWRActionUtil.execute('/ajax/TestFM', {}, doOnJSResult, "stream...");
- fieldId: 被转换为action调用参数的字段的id。
例子:
"mytext" name="mytext" value="some value" type="text"/>
DWRActionUtil.execute('/ajax/TestFM', 'mytext', doOnJSResult, "stream...");
- formId: 表单的id. 所有的input值被转换为action调用参数。
Note : 如果你的action使用了parameter拦截器,那么你的action会得到正确的参数值,请参考WebWork的文档。
callback 可以是:
- callbackFunction: 在DWR中,这个函数在请求完毕后调用。
- callbackObject: 在DWR中,callback对象。
最后 displayMessage 是可选参数,当请求完毕后显示的消息(参考DWR文档)
高级
你可以声明一个pre/post Action处理器,在web.xml中的一个context-wide初始化参数(dwrActionProcessor)。处理器必须实现org.directwebremoting.webwork.IDWRActionProcessor 接口。这个处理器将会在action之前和之后被调用,所以你可以做一些预处理或改变结果。
分享到:
相关推荐
DWR 可以无缝集成到 Struts2 或 Webwork2 中,通过异步更新页面部分,提高用户体验。 深入浅出Struts2 的开发指南通常会涵盖以下主题:MVC 模式,Action 和 Result,配置管理,拦截器,国际化,异常处理,以及与第...
- **DWR与WebWork**:特定的配置和脚本导入机制支持WebWork与DWR的结合使用。 - **DWR与Acegi**:解决Acegi安全框架下DWR的权限问题。 #### DWR中的JavaScript - **简单的回调函数**:介绍如何使用DWR进行异步调用...
5. **JSP页面**: 包含HTML和JavaScript代码,用于展示界面和执行DWR调用。 通过这些源码,你可以了解到如何在实际项目中整合Struts2.0和DWR,实现高效的AJAX表单验证。这种技术在现代Web应用中非常常见,能够提供...
**DWR与WebWork整合**:在WebWork框架中,DWR能够作为Action链的一部分,实现更复杂的业务逻辑处理。 **DWR与Acegi整合**:结合Acegi安全框架,DWR能够实现细粒度的安全控制,保护应用不受攻击。 #### 四、DWR中的...
1. **第1章:DWR入门** - 引导读者逐步了解DWR的基本概念,并通过一个简单的示例(HelloWorld)来演示如何搭建DWR开发环境以及实现基本的远程方法调用功能。 2. **第2章:web.xml配置** - 详细介绍了如何在web.xml...
它们分别负责不同的职责:Struts2作为MVC框架处理用户请求和业务逻辑,Spring提供依赖注入和全面的框架支持,Hibernate则是ORM(对象关系映射)框架用于数据库操作,而DWR则实现了Ajax的远程方法调用,使得前端可以...
他们主要通过将Webwork中的相关类复制到新的包中,并修改`dwr.xml`配置文件,以便让DWR能够识别Struts2的Action和Action方法。 **DWR的使用步骤**: 1. **设置环境**:确保项目中包含DWR的jar文件,并正确配置`web...
通过这个代理,Struts2能够动态地决定调用哪个Action以及如何调用。`StrutsActionProxy`、`StrutsActionProxyFactory`和`StrutsObjectFactory`是Struts2对XWork的扩展,用于定制和管理Action的实例化过程。 在视图...
2.5.2 利用工厂方法来创建Bean 2.5.3 初始化和销毁Bean 2.6 小结 第3章 高级Bean装配 3.1 声明父Bean和子Bean 3.1.1 抽象基Bean类型 3.1.2 抽象共同属性 3.2 方法注入 3.2.1 基本的方法替换 3.2.2 获取器...
2.5.2利用工厂方法来创建bean 2.5.3初始化和销毁bean 2.6小结 第3章高级bean装配 3.1声明父bean和子bean 3.1.1抽象基bean类型 3.1.2抽象共同属性 3.2方法注入 3.2.1基本的方法替换 3.2.2获取器注入 3.3...
2.5.2 利用工厂方法来创建Bean 2.5.3 初始化和销毁Bean 2.6 小结 第3章 高级Bean装配 3.1 声明父Bean和子Bean 3.1.1 抽象基Bean类型 3.1.2 抽象共同属性 3.2 方法注入 3.2.1 基本的方法替换 3.2.2 获取器...