DWR的使用

DWR的使用

如何利用DWR框架直接调用java方法...2

1.DWR的作用:...2

2.  DWR框架直接调用java类方法的配置...2

2.1 dwr.xml的配置...2

2.2如何在javascript中调用DWR配置好的java类方法...3

更新:如何直接获取DWR返回值...4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

如何利用DWR框架直接调用java方法

1.DWR的作用:    

DWR是一个框架,简单的说就是能够在javascript直接调用java方法,而不必去写一大堆javascript代码。他是基于ajax的,可以实现无刷新效果。

2.  DWR框架直接调用java类方法的配置

2.1 dwr.xml的配置

在我们所建工程的WebRoot/WEB-INF目录下面找到dwr.xml文件

dwr.xml的文件内容大体框架如下:

<dwr>

<allow>

<create creator=”new”  javascript=”testClass”>

<param name=”class” value=”com.dwr.TestClass”>

<include method=”testMethod”>

</create>

</allow>

</dwr>

框架说明:

1<allow>标签中包括可以暴露给javascript访问的东西。

2<create>标签中指定javascript中可以访问的类,并定义DWR应当如何获要进行远程的类的实例。Creator=”new”的属性用来指定java类实例的生成方式,new意味着DWR应当调用类的默认构造函数来获取实例。

3javascript=” testClass”属性指定javascript代码访问对象时使用的类名称。

4<param>标签指定要公开给javascriptjava类名

(应包含路径如:<paramname="classvalue="com.taiji.waf.sys.controller.WafUserController"/>

5<include>标签指定要公开给javascript的方法。不指定就公开所有方法。

<exclude>标签指定要防止被访问的方法

配置好这个之后

2.2如何在javascript中调用DWR配置好的java类方法

首先将下面三段代码引入javascript脚本中

(1)<script type='text/javascript' src='/你的工程名/dwr/interface/类名.js'></script>

(2)<script type='text/javascript' src='/你的工程名/dwr/engine.js'></script>

(3) <script type='text/javascript' src='/你的工程名/dwr/util.js'></script>

例如:

 

示例

在引入上面三条代码之后,我们就可以在javascript中直接调用java类方法了

具体调用写法:

<!—callback是我们所调用函数的返回值—>

function callback(){

}

<!—现在我们在function Test()中调用java类的某个方法)—>

function Test(){

。。。。。

类名.方法(参数1,参数2……callback//其中一定要有callback参数

}

如下例:

function callback(uiu){

   if(uiu!=1){alert("您的考核权重配置为:"+uiu+",请验证您的考核权重比例");}

   }

  functionPsearch(){

 

   if(document.getElementById("A_id").value=="")alert("请输入被考核人");

   else{

        java

   RatingsConfigAction.Getd(document.getElementById("A_id").value,document.getElementById("ast").value,callback);

  }

function callback(uiu){

   if(uiu!=1){alert("您的考核权重配置为:"+uiu+",请验证您的考核权重比例");}

   }

  functionPsearch(){

 

   if(document.getElementById("A_id").value=="")alert("请输入被考核人");

   else{

        java          类方法

   RatingsConfigAction.Getd(document.getElementById("A_id").value,document.getElementById("ast").value,callback);

  }

 

 

 

 

 

 

 

 

 

 

 


详情请参考:http://wenku.baidu.com/view/4d7cdac10c22590102029d7a.html

http://jinguo.iteye.com/blog/210834

 

 

更新:如何直接获取DWR返回值

一般在页面中要取DWR方法的值的做法

function test(){

     dwrTest.hello(function(data){alert(data)})

}

当你的javascript的test方法要返回这个值时就不好办了。因为DWR方法返回值是执行完后通过调用指定的函数将值返回。这们的话,我们往往会这么做

function test(){

     var result;

     dwrTest.hello(function(data){result=data})

     return result;

}

 

上面的代码在使用的时候会发现它的返回值为"undefined",分析一下

dwrTest.hello(function(data){result=data})

这一句中“function(data){result=data}"这个方法是一个传给dwrTest.hello的一个参数,是由hello方法执行完后再调用的,所以在test()中并不会执行,就直接返回了一个未初始化的"result"。

实际上这就是一个异步处理过程,而javaScript默认是同步执行的。

我们只要把上面的代码改成:

Code
 function test(){
     
var result;

//设置成同步方式
     DWREngine.setAsync(
false);
     dwrTest.hello(
function(data){result=data})

//设置成异步方式
     DWREngine.setAsync(
true);
     
return result;
}

这样JavaScript执行的时候就会等待"dwrTest.hello"执行完毕后再执行接下来的语句,这时我们就可以直接取得返回值了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值