dwr返回对象文档格式.docx
- 文档编号:20386363
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:18
- 大小:26.05KB
dwr返回对象文档格式.docx
《dwr返回对象文档格式.docx》由会员分享,可在线阅读,更多相关《dwr返回对象文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
javascript="
testClass"
属性指定javascript代码访问对象时使用的名称。
param>
标签指定要公开给javascript的java类名。
include>
标签指定要公开给javascript的方法。
不指定的话就公开所有方法。
exclude>
标签指定要防止被访问的方法。
1.2、javascript中调用
首先,引入javascript脚本
scriptsrc='
dwr/interface/testClass.js'
>
/script>
scriptsrc="
/dwr/engine.js"
/dwr/util.js"
其中TestClass.js是dwr根据配置文件自动生成的,engine.js和util.js是dwr自带的脚本文件。
其次,编写调用java方法的javascript函数
FunctioncallTestMethod1(){
testClass.testMethod1();
}
2、调用有简单返回值的java方法
2.1、dwr.xml的配置
配置同1.1
testMethod2"
2.2、javascript中调用
其次,编写调用java方法的javascript函数和接收返回值的回调函数
FunctioncallTestMethod2(){
testClass.testMethod2(callBackFortestMethod2);
FunctioncallBackFortestMethod2(data){
//其中date接收方法的返回值
//可以在这里对返回值进行处理和显示等等
alert("
thereturnvalueis"
+data);
其中callBackFortestMethod2是接收返回值的回调函数
3、调用有简单参数的java方法
3.1、dwr.xml的配置
testMethod3"
3.2、javascript中调用
FunctioncallTestMethod3(){
//定义要传到java方法中的参数
vardata;
//构造参数
data=“testString”;
testClass.testMethod3(data);
4、调用返回JavaBean的java方法
4.1、dwr.xml的配置
testMethod4"
convertconverter="
bean"
match="
"
com.dwr.TestBean"
include"
username,password"
/convert>
creator>
标签负责公开用于Web远程的类和类的方法,<
convertor>
标签则负责这些方法的参数和返回类型。
convert元素的作用是告诉DWR在服务器端Java对象表示和序列化的JavaScript之间如何转换数据类型。
DWR自动地在Java和JavaScript表示之间调整简单数据类型。
这些类型包括Java原生类型和它们各自的封装类表示,还有String、Date、数组和集合类型。
DWR也能把JavaBean转换成JavaScript表示,但是出于安全性的原因,要求显式的配置,<
标签就是完成此功能的。
converter="
属性指定转换的方式采用JavaBean命名规范,match="
属性指定要转换的javabean名称,<
标签指定要转换的JavaBean属性。
4.2、javascript中调用
FunctioncallTestMethod4(){
testClass.testMethod4(callBackFortestMethod4);
FunctioncallBackFortestMethod4(data){
//对于JavaBean返回值,有两种方式处理
//不知道属性名称时,使用如下方法
for(varpropertyindata){
property:
+property);
alert(property+"
:
+data[property]);
//知道属性名称时,使用如下方法
alert(data.username);
alert(data.password);
其中callBackFortestMethod4是接收返回值的回调函数
5、调用有JavaBean参数的java方法
5.1、dwr.xml的配置
配置同4.1
testMethod5"
5.2、javascript中调用
FunctioncallTestMethod5(){
//构造参数,date实际上是一个object
data={username:
user"
password:
password"
}
testClass.testMethod5(data);
6、调用返回List、Set或者Map的java方法
6.1、dwr.xml的配置
testMethod6"
注意:
如果List、Set或者Map中的元素均为简单类型(包括其封装类)或String、Date、数组和集合类型,则不需要<
convert>
标签。
6.2、javascript中调用(以返回List为例,List的元素为TestBean)
FunctioncallTestMethod6(){
testClass.testMethod6(callBackFortestMethod6);
FunctioncallBackFortestMethod6(data){
for(vari=0;
i<
data.length;
i++){
7、调用有List、Set或者Map参数的java方法
7.1、dwr.xml的配置
testMethod7"
signatures>
!
[CDATA[
importjava.util.List;
importcom.dwr.TestClass;
importcom.dwr.TestBean;
TestClass.testMethod7(List<
TestBean>
);
]]>
/signatures>
标签是用来声明java方法中List、Set或者Map参数所包含的确切类,以便java代码作出判断。
7.2、javascript中调用(以返回List为例,List的元素为TestBean)
FunctioncallTestMethod7(){
//构造参数,date实际上是一个object数组,即数组的每个元素均为object
data=[
{
username:
user1"
password:
password2"
},
user2"
password2"
];
testClass.testMethod7(data);
1、对于第6种情况,如果java方法的返回值为Map,则在接收该返回值的javascript回调函数中如下处理:
functioncallBackFortestMethod(data){
varbean=data[property];
alert(bean.username);
alert(bean.password);
2、对于第7种情况,如果java的方法的参数为Map(假设其key为String,value为TestBean),则在调用该方法的javascript函数中用如下方法构造要传递的参数:
functioncallTestMethod(){
//构造参数,date实际上是一个object,其属性名为Map的key,属性值为Map的value
data={
key1"
key2"
};
testClass.testMethod(data);
并且在dwr.xml中增加如下的配置段
TestClass.testMethod7(Map<
String,TestBean>
3、由以上可以发现,对于java方法的返回值为List(Set)的情况,DWR将其转化为Object数组,传递个javascript;
对于java方法的返回值为Map的情况,DWR将其转化为一个Object,其中Object的属性为原Map的key值,属性值为原Map相应的value值。
4、如果java方法的参数为List(Set)和Map的情况,javascript中也要根据3种所说,构造相应的javascript数据来传递到java中。
======================================================================================
ScriptingIntroduction
DWR根据dwr.xml生成和Java代码类似的Javascript代码。
相对而言Java同步调用,创建与Java代码匹配的Ajax远程调用接口的最大挑战来至与实现Ajax的异步调用特性。
DWR通过引入回调函数来解决这个问题,当结果被返回时,DWR会调用这个函数。
有两种推荐的方式来使用DWR实现远程方法调用。
可以通过把回调函数放在参数列表里,也可以把回调函数放到元数据对象里。
当然也可以把回调函数做为第一个参数,但是不建议使用这种方法。
因为这种方法在处理自动处理http对象时(查看"
AlternativeMethod"
)上会有问题。
这个方法主要是为向下兼容而存在的。
简单的回调函数
假设你有一个这样的Java方法:
publicclassRemote{publicStringgetData(intindex){...}}
我们可以在Javascript中这样使用:
scripttype="
text/javascript"
src="
[WEBAPP]/dwr/interface/Remote.js"
<
[WEBAPP]/dwr/engine.js"
...functionhandleGetData(str){alert(str);
}Remote.getData(42,handleGetData);
42是Java方法getData()的一个参数。
此外你也可以使用这种减缩格式:
Remote.getData(42,function(str){alert(str);
});
调用元数据对象(Meta-Data)
另外一种语法时使用"
调用元数据对象"
来指定回调函数和其他的选项。
上面的例子可以写成这样:
Remote.getData(42,{callback:
function(str){alert(str);
}});
这种方法有很多优点:
易于阅读,更重要的指定额外的调用选项。
超时和错误处理
在回调函数的元数据中你可以指定超时和错误的处理方式。
例如:
},timeout:
5000,errorHandler:
function(message){alert("
Oops:
"
+message);
查找回调函数
有些情况下我们很难区分各种回调选项(记住,Javascript是不支持函数重载的)。
Remote.method({timeout:
3},{errorHandler:
somefunc});
这两个参数之一是bean的参数,另一个是元数据对象,但是我们不能清楚的告诉DWR哪个是哪个。
为了可以跨浏览器,我们假定null==undefined。
所以当前的情况,规则是:
∙如果第一个或最后一个是一个函数,那么它就是回调函数,没有元数据对象,并且其他参数都是Java的方法参数。
∙另外,如果最后一个参数是一个对象,这个对象中有一个callback成员,并且它是个函数,那么这个对象就是元数据对象,其他的都是Java方法参数。
∙另外,如果第一个参数是null,我们就假设没有回调函数,并且其他的都是Java方法参数。
尽管如此,我们会检查最后一个参数是不是null,如果是就发出警告。
∙最后如果最后一个参数是null,那么就没有callback函数。
∙另外,发出错误信号是个糟糕的请求格式。
创造一个与Java对象匹配的Javascript对象
假设你有这样的Java方法:
publicclassRemote{publicvoidsetPerson(Personp){this.person=p;
}}
Person对象的结构是这样的:
publicPerson{privateStringname;
privateintage;
privateDate[]appointments;
//gettersandsetters...}
那么你可以在Javascript中这样写:
varp={name:
FredBloggs"
age:
42,appointments:
[newDate(),newDate("
1Jan2008"
)]};
Remote.setPerson(p);
在Javascript没有出现的字段,在Java中就不会被设置。
因为setter都是返回'
void'
,我们就不需要使用callback函数了。
如果你想要一个返回void的服务端方法的完整版,你也可以加上callback函数。
很明显DWR不会向它传递任何参数。
DWRutil.js整理(DWR处理各种form表单Select/option,table等,List,Bean
(2)
2009年04月24日星期五下午04:
50
/********************************************************************************/
/***********************QQ:
171505924Gump**************************************/
4、getText取得text属性值
DWRUtil.getText(id):
用来获得option中的文本
比如:
Java代码
1.
selectid="
select"
2.<
option
1"
苹果<
/option>
3.<
2"
select>
香蕉<
4.<
3"
鸭梨<
5.
/select>
optionvalue="
调用DWRUtil.getText("
将返回"
香蕉"
字段;
DWRUtil.getText(id);
仅仅是用来获得select文本值,其他不适用。
/******************************************************************************/
5、DWRUtil.getValue(id):
用来获得form表单值
有如下几种情况:
Textarea(id="
textarea"
):
D
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- dwr 返回 对象