问题:调用不了后台的方法,弹出对话框“Error”的错误web.xml
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>
initApplicationScopeCreatorsAtStartup
</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>maxWaitAfterWrite</param-name>
<param-value>100</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
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>
<create creator="new" javascript="usbiz">
<param name="class" value="com.test.dao.UsersDaoImpl" />
</create>
</allow>
</dwr>
html页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>首页</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type='text/javascript' src='dwr/interface/usbiz.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script language="javascript" type="text/javascript">
function getChildAreaname(){
usbiz.getUserByLogin("sa","sa",result);
}
function result(data){
alert("aa");
}
</script>
</head>
<body onload="getChildAreaname();">
</body>
</html>
java代码
package com.test.dao.impl;import java.util.List;import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.test.dao.UsersDao;
import com.test.entity.Users;public class UsersDaoImpl extends HibernateDaoSupport implements UsersDao { public Users getUserByLogin(String username, String password) {
Session session=this.getSession();
String hql="from Users where userName=? and password=?";
Query query=session.createQuery(hql);
query.setString(0, username);
query.setString(1, password);
List list=query.list();
if(list.size()>0){
return (Users) list.get(0);
}
return null;
}
}
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>
initApplicationScopeCreatorsAtStartup
</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>maxWaitAfterWrite</param-name>
<param-value>100</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
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>
<create creator="new" javascript="usbiz">
<param name="class" value="com.test.dao.UsersDaoImpl" />
</create>
</allow>
</dwr>
html页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>首页</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type='text/javascript' src='dwr/interface/usbiz.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script language="javascript" type="text/javascript">
function getChildAreaname(){
usbiz.getUserByLogin("sa","sa",result);
}
function result(data){
alert("aa");
}
</script>
</head>
<body onload="getChildAreaname();">
</body>
</html>
java代码
package com.test.dao.impl;import java.util.List;import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.test.dao.UsersDao;
import com.test.entity.Users;public class UsersDaoImpl extends HibernateDaoSupport implements UsersDao { public Users getUserByLogin(String username, String password) {
Session session=this.getSession();
String hql="from Users where userName=? and password=?";
Query query=session.createQuery(hql);
query.setString(0, username);
query.setString(1, password);
List list=query.list();
if(list.size()>0){
return (Users) list.get(0);
}
return null;
}
}
在struts2的环境下没用过dwr
struts2只是用来显示页面转向等等的框架 和dwr有什么关系。DWR一般都是和spring整合,建议楼主看看dwr+spring
web.xml <servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet> <servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
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>
<!-- new 出来,赋给test变量 -->
<create creator="spring" javascript="aclService">
<param name="beanName" value="aclService"></param>
</create>
</allow></dwr>index.jsp<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@include file="/common/common.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script language="javascript" src="js/public.js"></script>
<link href="css/oa.css" rel="stylesheet" type="text/css" />
<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/aclService.js"></script>
<script type="text/javascript">
//授权
function addOrUpdatePermission(field){dwr.engine.setAsync(false);
//如果被选择上,则同时选择其"不继承"和"启用"checkbox
if(field.checked)
{
$(field.resourceSn+"_USE").checked = true;
<c:if test="${type eq 'User' }">
$(field.resourceSn+"_EXT").checked = true;
</c:if>
}
if(!$(field.resourceSn+"_R").checked)
{
$(field.resourceSn+"_R").checked = true;
aclService.addOrUpdatePermission("${type}",${sn},field.resourceSn,1,field.checked);
}
aclService.addOrUpdatePermission(
"${type}",
${sn},
field.resourceSn,
field.permission,
field.checked
);
if(field.name && field.checked)
{
$(field.name+"_R").checked = true;
$(field.name+"_USE").checked = true;
<c:if test="${type eq 'User' }">
$(field.name+"_EXT").checked = true;
</c:if>
addOrUpdatePermission($(field.name+"_R"));
}
}//设置用户的继承特性
function addOrUpdateExtends(field){
dwr.engine.setAsync(false);
aclService.addOrUpdateUserExtends(
${sn},
field.resourceSn,
!field.checked
);
}//点击启用checkbox
function usePermission(field){
//如果checkbox被选中,意味着需要更新ACL的状态
//更新C/R/U/D以及Extends状态
//设置为同步方式,以便DWR依次发出下列请求
dwr.engine.setAsync(false);
if(field.checked){
addOrUpdatePermission($(field.resourceSn+"_C"));
addOrUpdatePermission($(field.resourceSn+"_R"));
addOrUpdatePermission($(field.resourceSn+"_U"));
addOrUpdatePermission($(field.resourceSn+"_D"));
<c:if test="${type eq 'User' }">
addOrUpdateExtends($(field.resourceSn+"_EXT"));
</c:if>
}else{
aclService.delPermission(
"${type}",
${sn},
field.resourceSn
);
$(field.resourceSn+"_C").checked = false;
$(field.resourceSn+"_R").checked = false;
$(field.resourceSn+"_U").checked = false;
$(field.resourceSn+"_D").checked = false;
<c:if test="${type eq 'User' }">
$(field.resourceSn+"_EXT").checked = false;
</c:if>
if(field.cid)
{
if(!$(field.resourceSn+"_R").checked)
{
var b = document.getElementsByName(field.cid);
for(i=0;i<b.length;i++)
{
b[i].checked = false;
<c:if test="${type eq 'User' }">
$(b[i].resourceSn+"_EXT").checked = false;
</c:if>
if(!b[i].pid)
{
aclService.addOrUpdatePermission("${type}",${sn},b[i].resourceSn,b[i].permission,false);
}
}
}
}
}
}function initTable(){
aclService.findAclRecord(
"${type}",
${sn},
function(datas){
for(var i=0; i < datas.length; i++){
var resourceSn = datas[i][0];
var cState = datas[i][1];
var rState = datas[i][2];
var uState = datas[i][3];
var dState = datas[i][4];
var extState = datas[i][5];
$(resourceSn+"_C").checked = cState == 0 ? false : true;
$(resourceSn+"_R").checked = rState == 0 ? false : true;
$(resourceSn+"_U").checked = uState == 0 ? false : true;
$(resourceSn+"_D").checked = dState == 0 ? false : true;
if($(resourceSn+"_C").checked || $(resourceSn+"_R").checked || $(resourceSn+"_U").checked || $(resourceSn+"_D").checked)
{
<c:if test="${type eq 'User' }">
$(resourceSn+"_EXT").checked = extState == 0 ? true : false;
</c:if>
$(resourceSn+"_USE").checked = true;
}
}
}
);
}</script>
<c:choose>
<c:when test="${type eq 'Role' }">
<c:set var="title" value="请给角色【${role.name }】授权" />
</c:when>
<c:otherwise>
<c:set var="title" value="请给用户【${user.username }】授权" />
</c:otherwise>
</c:choose>
<title>${title }</title>
</head>
<body onload="initTable()" style="text-align: center">
<center>
<TABLE class="tableEdit" border="0" cellspacing="1" cellpadding="0" style="width:580px;">
<TBODY>
<TR>
<!-- 这里是添加、编辑界面的标题 -->
<td align="center" class="tdEditTitle">${title }</TD>
</TR>
<TR>
<td>
<!-- 主输入域开始 --><table class="tableEdit" style="width:580px;" cellspacing="0" border="0" cellpadding="0" align="center">
<tr>
<td class="tdEditLabel" width="15%">顶级模块</td>
<td class="tdEditContent" width="15%">二级模块</td>
<td class="tdEditLabel" width="40%">权限</td>
<c:if test="${type eq 'User' }">
<td class="tdEditLabel" width="15%">不继承</td>
</c:if>
<td class="tdEditLabel" width="15%">启用</td>
</tr>
<!-- 输出模块树 -->
<c:forEach items="${modules }" var="module">
<tr>
<td width="15%">${module.name }</td>
<td width="15%"></td>
<td width="40%">
<input type="hidden" id="${module.id }_C"
onclick="addOrUpdatePermission(this)" resourceSn="${module.id }"
permission="0">
<input type="hidden" id="${module.id }_R"
onclick="addOrUpdatePermission(this)" resourceSn="${module.id }"
permission="1"> <input type="hidden" id="${module.id }_U"
onclick="addOrUpdatePermission(this)" resourceSn="${module.id }"
permission="2"> <input type="hidden" id="${module.id }_D"
onclick="addOrUpdatePermission(this)" resourceSn="${module.id }"
permission="3">
</td>
<c:if test="${type eq 'User' }">
<td width="15%"><input type="hidden" id="${module.id }_EXT"
onclick="addOrUpdateExtends(this)" resourceSn="${module.id }"></td>
</c:if>
<td width="15%"><input type="checkbox" id="${module.id }_USE" cid="${module.id }"
onclick="usePermission(this)" resourceSn="${module.id }"></td>
</tr>
<c:forEach items="${module.children }" var="child">
<tr>
<td></td>
<td>${child.name }</td>
<td>
<input type="checkbox" name="${child.parent.id }" tid="c"
id="${child.id }_C" onclick="addOrUpdatePermission(this)"
resourceSn="${child.id }" permission="0">
添加 <input type="checkbox" name="${child.parent.id }" tid="c"
id="${child.id }_R" onclick="addOrUpdatePermission(this)"
resourceSn="${child.id }" permission="1">
浏览 <input type="checkbox" name="${child.parent.id }" tid="c"
id="${child.id }_U" onclick="addOrUpdatePermission(this)"
resourceSn="${child.id }" permission="2">
修改 <input type="checkbox" name="${child.parent.id }" tid="c"
id="${child.id }_D" onclick="addOrUpdatePermission(this)"
resourceSn="${child.id }" permission="3">
删除
</td>
<c:if test="${type eq 'User' }">
<td><input type="checkbox" id="${child.id }_EXT"
onclick="addOrUpdateExtends(this)" resourceSn="${child.id }"></td>
</c:if>
<td><input type="checkbox" id="${child.id }_USE" name="${child.parent.id }" pid="b" dt="a"
onclick="usePermission(this)" resourceSn="${child.id }"></td>
</tr>
</c:forEach>
</c:forEach>
</table> <!-- 主输入域结束 -->
</td>
</TR>
</TBODY>
</TABLE><TABLE>
<TR align="center">
<TD colspan="3" bgcolor="#EFF3F7">
<input type="button" class="MyButton"
value="关闭窗口" onclick="window.close()">
</TD>
</TR>
</TABLE>
</center>
</body>
</html>
这是我之前用到的,因为只用了一次,忘了怎么搞吧。。
public Users getUserByLogin(String username, String password) {
要是可以的话,在那个页面调用一下你的方法,后台设断点,看看能不能进后台调试。。