DWR实现的效果就是类似于ajax,实现和后台交互而不刷新页面,实现DWR,有一下步骤:
1.页面引入三个JS:
<script type='text/javascript' src='dwr/interface/DWROperator.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
这三个JS不是实际存在的,至少在我这里没有,而是有个dwr3.0.jar,应该是这个jar包的作用, 必须像以上一样引入三个JS
2.页面运用:
function initAction(){
var processDefName = dwr.util.getValue("processDefName");
var activityDefName = dwr.util.getValue("activityDefId");
var nextActivityDefName = dwr.util.getValue("nextActivityDefId");
DWROperator.queryActivityRoles(processDefName + "@@" + activityDefName + "@@" + nextActivityDefName, function(data) {
dwr.util.removeAllOptions("receiveRole");
dwr.util.addOptions("receiveRole",data);
});
}
说明:processDefName:控件id,receiveRole:也是id
DWROperator自己创建的类,queryActivityRoles是DWROperator里面的方法(而且不是静态的)
3. DWROperator.java
@RemoteProxy
public class DWROperator {
/*
* DWR操作类,实现ajax功能
* */
private static final Logger log = Logger.getLogger(DWROperator.class);
private User user = UserManager.getInstance().getUserBySessionId(ServletActionContext.getRequest().getRequestedSessionId());
/*
* 获取活动参与者角色列表
* params:
* processDefName@@activityName@@nextActivityName
* return:
* 接单人角色列表
* */
public String[] queryActivityRoles(String params){
String[] paramArray = params.split("@@");
if(paramArray.length < 2){
return new String[0];
}
ActiveRoleMgr roleMgr = new ActiveRoleMgr();
List<String> rolesList = roleMgr.queryNextActivityRoles(paramArray[0], paramArray[1], paramArray[2]);
if(rolesList == null || rolesList.size() == 0){
return null;
}
String[] array = new String[rolesList.size() + 1];
array[0] = "--请选择--";
for(int index = 0; index < rolesList.size(); index++){
array[index + 1] = rolesList.get(index);
}
return array;
}
}
queryNextActivityRoles()是查询数据的方法,这里不再写了
4.dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">
<dwr>
<allow>
<filter class="org.directwebremoting.filter.AuditLogAjaxFilter"/>
<!-- intro - for the test on index.html -->
<create creator="new">
<param name="class" value="com.metarnet.cssf.common.DWROperator"/>
</create>
<convert converter="bean" match="com.metarnet.cssf.model.User"/>
</allow>
</dwr>
5.dwr.3.0.jar在我的资源里,可以下载
以上就可以实现DWR类似于ajax的操作