网页弹出警告框 'null'为空或不是对象

丨深水蓝丨 2012-08-28 12:22:00
打开网页的时候就弹出警告框 'null'为空或不是对象,一天了也没有搞定,求帮助,以下是整个页面文件。用到的是DWR,兄弟姐妹们解救下小弟。再次感谢!


<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@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=GB18030">
<link href="../style/oa.css" rel="stylesheet" type="text/css">
<script language="javascript" src="../script/public.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/dwr/engine.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/dwr/util.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/dwr/interface/aclManager.js"></script>
<script type="text/javascript">
//授权
function addOrUpdatePermission(field){
dwr.engine.setAsync(false);

//如果被选择上,则同时选择其"不继承"和"启用"checkbox
if(field.checked){
$(field.moduleId+"_USE").checked = true;
<c:if test="${aclInfo.principalType eq 'User' }">
$(field.moduleId+"_EXT").checked = true;
addOrUpdateExtends(field);
</c:if>
}

aclManager.addOrUpdatePermission(
"${aclInfo.principalType}",
${aclInfo.principalId},
field.moduleId,
field.permission,
field.checked
);
}

//设置用户的继承特性
function addOrUpdateExtends(field){
aclManager.addOrUpdateUserExtends(
${aclInfo.principalId},
field.moduleId,
!field.checked
);
}

//点击启用checkbox
function usePermission(field){
//如果checkbox被选中,意味着需要更新ACL的状态
//更新C/R/U/D以及Extends状态

//设置为同步方式,以便DWR依次发出下列请求
dwr.engine.setAsync(false);

if(field.checked){
addOrUpdatePermission($(field.moduleId+"_C"));
addOrUpdatePermission($(field.moduleId+"_R"));
addOrUpdatePermission($(field.moduleId+"_U"));
addOrUpdatePermission($(field.moduleId+"_D"));
<c:if test="${aclInfo.principalType eq 'User' }">
addOrUpdateExtends($(field.moduleId+"_EXT"));
</c:if>
}else{
aclManager.delPermission(
"${aclInfo.principalType}",
${aclInfo.principalId},
field.moduleId
);
$(field.moduleId+"_C").checked = false;
$(field.moduleId+"_R").checked = false;
$(field.moduleId+"_U").checked = false;
$(field.moduleId+"_D").checked = false;
<c:if test="${aclInfo.principalType eq 'User' }">
$(field.moduleId+"_EXT").checked = false;
</c:if>
}
}

function initTable(){
aclManager.searchAclRecord(
"${aclInfo.principalType}",
${aclInfo.principalId},
function(datas){
for(var i=0; i < datas.length; i++){
var moduleId = 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];
//alert(extState);
$(moduleId+"_C").checked = cState == 0 ? false : true;
alert($(moduleId+"_C").checked);
$(moduleId+"_R").checked = rState == 0 ? false : true;
$(moduleId+"_U").checked = uState == 0 ? false : true;
$(moduleId+"_D").checked = dState == 0 ? false : true;
<c:if test="${aclInfo.principalType eq 'User' }">
$(moduleId+"_EXT").checked = extState == 0 ? true : false;
</c:if>
$(moduleId+"_USE").checked = true;
}
}
);
}

</script>
<c:choose>
<c:when test="${aclInfo.principalType eq 'Role' }">
<c:set var="title" value="请给角色【${role.name }】授权"/>
</c:when>
<c:otherwise>
<c:set var="title" value="请给用户【${user.person.name }】授权"/>
</c:otherwise>
</c:choose>
<title>${title }</title>
</head>
<body onload="initTable()">
<center>
<TABLE class="tableEdit" border="0" cellspacing="1" cellpadding="0" style="width:560px;">
<TBODY>
<TR>
<!-- 这里是添加、编辑界面的标题 -->
<td align="center" class="tdEditTitle">${title }</TD>
</TR>
<TR>
<td>
<!-- 主输入域开始 -->

<table class="tableEdit" style="width:560px;" cellspacing="0" border="0" cellpadding="0">

<tr>
<td class="tdEditLabel" >顶级模块</td>
<td class="tdEditLabel">二级模块</td>
<td class="tdEditLabel" >权限</td>
<c:if test="${aclInfo.principalType eq 'User' }">
<td class="tdEditLabel" >不继承</td>
</c:if>
<td class="tdEditLabel" >启用</td>
</tr>

<!-- 输出模块树 -->
<c:forEach items="${modules }" var="module">
<tr>
<td>${module.name }</td>
<td></td>
<td>
<input type="checkbox" id="${module.id }_C" onclick="addOrUpdatePermission(this)" moduleId="${module.id }" permission="0">C
<input type="checkbox" id="${module.id }_R" onclick="addOrUpdatePermission(this)" moduleId="${module.id }" permission="1">R
<input type="checkbox" id="${module.id }_U" onclick="addOrUpdatePermission(this)" moduleId="${module.id }" permission="2">U
<input type="checkbox" id="${module.id }_D" onclick="addOrUpdatePermission(this)" moduleId="${module.id }" permission="3">D
</td>
<c:if test="${aclInfo.principalType eq 'User' }">
<td><input type="checkbox" id="${module.id }_EXT" onclick="addOrUpdateExtends(this)" moduleId="${module.id }"></td>
</c:if>
<td><input type="checkbox" id="${module.id }_USE" onclick="usePermission(this)" moduleId="${module.id }"></td>
</tr>
<c:forEach items="${module.children }" var="child">
<tr>
<td></td>
<td>${child.name }</td>
<td>
<input type="checkbox" id="${child.id }_C" onclick="addOrUpdatePermission(this)" moduleId="${child.id }" permission="0">C
<input type="checkbox" id="${child.id }_R" onclick="addOrUpdatePermission(this)" moduleId="${child.id }" permission="1">R
<input type="checkbox" id="${child.id }_U" onclick="addOrUpdatePermission(this)" moduleId="${child.id }" permission="2">U
<input type="checkbox" id="${child.id }_D" onclick="addOrUpdatePermission(this)" moduleId="${child.id }" permission="3">D
</td>
<c:if test="${aclInfo.principalType eq 'User' }">
<td><input type="checkbox" id="${child.id }_EXT" onclick="addOrUpdateExtends(this)" moduleId="${child.id }"></td>
</c:if>
<td><input type="checkbox" id="${child.id }_USE" onclick="usePermission(this)" moduleId="${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>
...全文
1016 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
taimignqing 2014-05-09
  • 打赏
  • 举报
回复
大神,怎么解决的,能贴出来吧,我遇到了同样的问题
小V小V志 2012-08-28
  • 打赏
  • 举报
回复
可能是js執行順序有問題,可能結果未返回就alert()所以為Null
丨深水蓝丨 2012-08-28
  • 打赏
  • 举报
回复
出错的问题是initTable()这个函数。
丨深水蓝丨 2012-08-28
  • 打赏
  • 举报
回复
刚安装了火狐,发现弹出框框 $(moduleId + "_C") is null 难道是不获取到checkbox的ID吗, 我是用DWR这样做的,老师也是这样教的,朋友们这一句到底是哪里错了呢?
丨深水蓝丨 2012-08-28
  • 打赏
  • 举报
回复
5楼的朋友,
我很确定问题就在initTable()这个函数里,当在body 里取消onload="initTable()"时,就没问题了,
alert(extState);正常
alert($(moduleId+"_C").checked);的时候就没有反应,什么也不弹出。还是继续弹出那个万恶的警告框。
${aclInfo.principalType} 是正常的。
苍天啦!!!!

6楼的朋友,错误地方已经确定了,可是这里的变量也没发现哪里有问题了啊??
十四月的清晨 2012-08-28
  • 打赏
  • 举报
回复
我这没环境没法调啊,你用IE8 或者火狐 调试一下看看哪行报错啊,

这个错误有很多可能的

或者你JS 先删几个方法留几个一个一个排除 看看是哪个JS

一般就是你JS里某个属性还没取到值 就应用了

就是你的JS初始化 变量先后顺序有问题

scbb 2012-08-28
  • 打赏
  • 举报
回复
alert(extState);
alert($(moduleId+"_C").checked);
这两个都正常??

再alert
${aclInfo.principalType} 这个看看??
丨深水蓝丨 2012-08-28
  • 打赏
  • 举报
回复
刚刚又看了,还是一样,求解救啊,急死人了。
和稀泥 2012-08-28
  • 打赏
  • 举报
回复
断电走一下代码,刚遇到一个类似问题。
和稀泥 2012-08-28
  • 打赏
  • 举报
回复
程序逻辑异常
丨深水蓝丨 2012-08-28
  • 打赏
  • 举报
回复
谢谢各位的帮助,现在解决了,在IE上已经没有问题了,可是在firefox上还是有问题,我把整个程序通测了一次,发现后台有几个参数查询出错了,又不报错,导致前面用到了空值,泪奔啊。再次感谢!
hezhao4444 2012-08-28
  • 打赏
  • 举报
回复
解决办法,在你调用的方法设一个断点,你一定是调用取不到数据。
handsome_huxiulei 2012-08-28
  • 打赏
  • 举报
回复
在弹出null的时候 坐下判断 比如你 xx.id的时候 null 肯定是xx为null
if(xx){在alert xx.id}
PowerBI系列之Power Query专题1.  获取数据 数据源种类介绍和获取Excel数据源输入数据和拷贝数据:创建辅助表解析Json/XML数据格式获取Web网页数据和URL添加动态参数连接数据的四种模式:Import、DirectQuery、Live Connection、Dual双 属于混合模式连接数据库:Sql server、 Mysql(直连但是必须先安装一个mysql插件)DirectQuery直连查询:Sql serverODBC方式获取数据表关联或多个Sql或调用存储过程获取数据SQL中动态传参和自定义函数: sql中使用参数或数据库名称使用参数连接Sharepoint和OneDrive数据源连接Dataset和Dataflow 替换本地数据源为Sharepoint数据源并保留数据处理操作 终止当前数据刷新Loading:Cancel Query数据源设置-重置数据连接凭证PBIDS连接数据源创建和使用报表模块(输入或值列表)利用报表模板和参数控制线下报表数据权限DirectQuery启用自动页面刷新和更改检测管理聚合表提高DirectQuery查询性能动态M查询参数提高DirectQuery查询性能添加数据刷新时间 DateTime.LocalNow()和Getdate()2.  数据清洗和M语言M语言和官方文档介绍PowerQuery中查阅M函数:=#shared, Ctrl+Space提示数据清洗之常用技能:提升标题、更改数据类型、保留删除错误或空行,删除重复项、选择列和删除列、填充单元格、合并列、拆分、提取、替换、条件替换、添加自定义列,添加条件列、添加索引列、分组、添加年月日列、追加和合并查询透视和逆透视以及转置合并单元格的Excel文件处理导入文件夹中多Excel文件并合并解决多文件合并中列顺序不一致使用参数和函数批量导入文件 文本中提取中文、英文、数字等处理双引号转义 列拆分详解解决列名改变错误解决列丢失错误动态显示、排序和重命名列为所有列名添加前缀列名字母大写和分隔符调整Trim标题列中的多余空格如何处理load数据错误为什么load的Excel数据有null空行为什么load的Excel数据标题在第二行灵活添加占位符规范同类相似数据数据按多列排序为分组添加Index序号分组内值合并诊断工具分析数据处理过程PowerQuery小技巧分享 新冠病例活动轨迹地图标识 

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧