DWR配置

今日用到了DWR让我折腾了一会,最终搞定,先记住,方便下次不用麻烦!

1,添加Dwr.jar

2,配置web.xml(请自行添加ContextLoaderListener监听器,否则bean无法获取!),

     

1.<servlet>  
2.   <servlet-name>dwr-invoker</servlet-name>  
3.   <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>  
4.   <init-param>  
5.    <param-name>debug</param-name>  
6.    <param-value>true</param-value>  
7.   </init-param>  
8.   <init-param>           
9.            <param-name>crossDomainSessionSecurity</param-name>           
10.            <param-value>false</param-value>           
11.    </init-param>    
12.  </servlet>  
13.  <servlet-mapping>  
14.   <servlet-name>dwr-invoker</servlet-name>  
15.   <url-pattern>/dwr/*</url-pattern>  
16.  </servlet-mapping>  


 

3,配置dwr.xml(将此文件添加到WEB-INFO目录下,此配置方法很多,详参考相关文档)

 

1.<?xml version="1.0" encoding="UTF-8"?>  
2.<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">  
3.<dwr>  
4.  <allow>  
5.    <create creator="spring" javascript="aclManager" scope="application">  
6.      <param name="beanName" value="aclManager"/>  
7.    </create>  
8.       
9.    <convert converter="bean" match="com.panlong.service.impl.AclManagerImpl" />  
10.  </allow>  
11.</dwr>  


 

4,要使用时请先在调用页面引入文件如下:

1.<script type="text/javascript" src="<%=request.getContextPath() %>/dwr/engine.js"></script>  
2.<script type="text/javascript" src="<%=request.getContextPath() %>/dwr/util.js"></script>  
3.<script type="text/javascript" src="<%=request.getContextPath() %>/dwr/interface/aclManager.js"></script>  


 

5,使用例子。

1.<script type="text/javascript">   
2.//授权   
3.function addOrUpdatePermission(field){   
4.    dwr.engine.setAsync(false);   
5.       
6.    //如果被选择上,则同时选择其"不继承"和"启用"checkbox   
7.    if(field.checked){   
8.        $(field.moduleId+"_USE").checked = true;   
9.        <c:if test="${aclInfo.principalType eq 'User' }">   
10.        $(field.moduleId+"_EXT").checked = true;   
11.        addOrUpdateExtends(field);   
12.        </c:if>   
13.    }   
14.  
15.    aclManager.addOrUpdatePermission(   
16.        "${aclInfo.principalType}",   
17.        ${aclInfo.principalId},   
18.        field.moduleId,   
19.        field.permission,   
20.        field.checked   
21.    );   
22.}   
23.  
24.//设置用户的继承特性   
25.function addOrUpdateExtends(field){   
26.    aclManager.addOrUpdateUserExtends(   
27.        ${aclInfo.principalId},   
28.        field.moduleId,   
29.        !field.checked   
30.    );   
31.}   
32.  
33.//点击启用checkbox   
34.function usePermission(field){   
35.    //如果checkbox被选中,意味着需要更新ACL的状态   
36.    //更新C/R/U/D以及Extends状态   
37.       
38.    //设置为同步方式,以便DWR依次发出下列请求   
39.    dwr.engine.setAsync(false);   
40.       
41.    if(field.checked){   
42.        addOrUpdatePermission($(field.moduleId+"_C"));   
43.        addOrUpdatePermission($(field.moduleId+"_R"));   
44.        addOrUpdatePermission($(field.moduleId+"_U"));   
45.        addOrUpdatePermission($(field.moduleId+"_D"));   
46.        <c:if test="${aclInfo.principalType eq 'User' }">   
47.        addOrUpdateExtends($(field.moduleId+"_EXT"));   
48.        </c:if>   
49.    }else{   
50.        aclManager.delPermission(   
51.            "${aclInfo.principalType}",   
52.            ${aclInfo.principalId},   
53.            field.moduleId         
54.        );   
55.        $(field.moduleId+"_C").checked = false;   
56.        $(field.moduleId+"_R").checked = false;   
57.        $(field.moduleId+"_U").checked = false;   
58.        $(field.moduleId+"_D").checked = false;   
59.        <c:if test="${aclInfo.principalType eq 'User' }">   
60.        $(field.moduleId+"_EXT").checked = false;   
61.        </c:if>   
62.    }   
63.}   
64.  
65.function initTable(){   
66.    aclManager.searchAclRecord(   
67.        "${aclInfo.principalType}",   
68.        ${aclInfo.principalId},   
69.        function(datas){   
70.            for(var i=0; i < datas.length; i++){   
71.                var moduleId = datas[i][0];   
72.                var cState = datas[i][1];   
73.                var rState = datas[i][2];   
74.                var uState = datas[i][3];   
75.                var dState = datas[i][4];   
76.                var extState = datas[i][5];   
77.                   
78.                $(moduleId+"_C").checked = cState == 0 ? false : true;   
79.                $(moduleId+"_R").checked = rState == 0 ? false : true;   
80.                $(moduleId+"_U").checked = uState == 0 ? false : true;   
81.                $(moduleId+"_D").checked = dState == 0 ? false : true;   
82.                <c:if test="${aclInfo.principalType eq 'User' }">   
83.                $(moduleId+"_EXT").checked = extState == 0 ? true : false;   
84.                </c:if>   
85.                $(moduleId+"_USE").checked = true;   
86.            }   
87.        }   
88.    );   
89.}   
90.  
91.</script>  


 

结束!

 

java技术社区QQ群:48596106欢迎你的加入!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值