dwr和spring整合使用

我是用spring与dwr融合的方式的来使用dwr的.不多说,就说使用步骤吧!
      第一步  导入dwr.jar (version: 2.0.5)
      第二步  配置web.xml文件
      第三步  配置dwr.xml
      第四步  编写js代码
      第五步  页面引用

1.略

2.略

3.配置dwr.xml

   前两步没什么好说的,我们来看第三步:

<dwr>
  <allow> 
         //一个create对应 java中一个类 
      //creator="spring" 表明由spring来创建,
         //子节点<param> 就必须是 name="beanName" 
        //value="***" 此处的***代表你
     //spring的配置文件也就是applicationContext.xml文件中
     //声明 bean 的id的值
     //而 create标签的javascript属性的值就是用它来代表bean中的对象     

   <create javascript="userService"  creator="spring">
        <param name="beanName" value="userService"></param>
       
        <!--  指定哪些文件可以通过dwr方式调用   -->
        <include method="checkUserName"  />   
        <include method="checkEmail"/>
    </create>
  </allow>
</dwr>

 

4.编写js代码(checkUser.js文件)

//定义一个全局变量,方便给页面中某个<span>标签动态的加上html代码
//你可以不理它的
var span_id ; 
function checkUserNameForExist(userName,span_info){
    span_id = span_info ;
    return  userService.checkUserName(userName,checkUserNameForExistBack);
    //此处的userService对应第三步中create 标签的javascript="userService",
    //而checkUserName的方法就是java中的方法,也即是userService bean中的checkUserName
    //当然参数 userName的获取你自己搞定了,通过document.getElementById("***").value等等
   //然后,自己再传入这个方法中
}
//此方法的参数是 userService这个bean的checkUserName方法的返回值
//我返回的是boolean类型
//也可以是 int String foalt double int[] string[] float[] double[] java.util.Date list set等

function checkUserNameForExistBack(varbool){ 
//这个方法是通过dwr方法调用后回调的方法
    if(varbool){ //不存在了
        document.getElementById(span_id).innerHTML="<font color='red'>此用户不存在</font>";
        return false ;
    }else{
        document.getElementById(span_id).innerHTML="";
        return true ;
    }
}

 

   关于回调的说明:

<script type="text/javascript">
    function doMethod(){
        //调用方法:若公开的类是AAA,公开的AAA里的方法是bbb([参数]);
       //回调函数callBack()
        AAA.bbb([参数],callBack);
    }
    
    //data是后台返回的值,名字自取,也可省略,因为JS允许
    function callBack(data) {
       //处理方法……;
       //如果callBack()没有写明返回值,可以通过argments[0]拿到
    }
</script>


//其实我们调用AAA.bbb([参数],callBack),就是做了以下这一步:
//(下面部分代码是包装好的,不在前台,所以即使你没有创建html或者jsp来调 
//用,也可以通过localhost:8080/工程名/dwr 来看到你暴露的java类进行测试)
    function AAA() { };
    AAA.bbb = function([参数], callback){
        DWREngine._execute('/dwr/dwr', 'AAA', 'bbb', [参数], callback);
    }

//通过在dwr.xml暴露的方法得到js里的方法,当我们调用AAA.bbb时候再通
//过/dwr/dwr转到DWRServlet中去用JAVA里的AAA.bbb方法,然后返回值到
//callback中(中间经过dwr.xml的convert)
比如: var getMav = function() {
   ecTypeService.editEcType(id, method, showModelView);
  }
  
 var showModelView = function(mav) {
  var model = mav.model;
  win = new Ext.Window( {

   border :true,
   layout :'fit' });  //这里的ecTypeService为spring管理的service,showModelView为回调方法,mav为回调返回的值

 

 

5.页面引用

一定记得引入以下四个文件

<script type="text/javascript" src="/dwr/engine.js"></script>
<script type="text/javascript" src="/dwr/util.js"></script>
 <script type="text/javascript" src="/dwr/interface/userService.js"></script>
 <script src="/js/checkUser.js"  type="text/javascript"></script>

 

然后就可以调用userService.js中的类

<script>
    function check_name(o,div_id){
        ...
    }
   
    function checkDescription(description,div_id){
        ...
    }
   
    function check_submit(f){
        var str="";
        if(!check_name(f.boardName,"boardName_info")){
            str=str+"false|";
        }
        var boardMaster = f.boardMaster.value ;
       
        //这里的 checkUserNameForExist 就是了
        if(!checkUserNameForExist(boardMaster,"boardMaster_info")){
            str=str+"false|";
        }
       
        var oEditor = FCKeditorAPI.GetInstance("boardDescription");
           var boardDescription=oEditor.GetXHTML(true);
       
        if(!checkDescription(boardDescription,"boardDescription_info")){
            str=str+"false|";
        }
       
        if(str==""){
            return true;
        }else{
            return false;
        }
    }
</script>

 

你可能感兴趣的:(JavaScript,spring,bean,xml,DWR)