Javascript 如何避免空指针异常?
我正在做一个项目,在这个项目中,我需要为类别创建一个带有下拉字段的表单。根据所选的类别,我必须填充第二个下拉列表subcaste。 这是我通过AJAX实现的 我还编写了一个方法,该方法将在类别更改时调用,以禁用子种姓下拉框(如果所选类别打开为):Javascript 如何避免空指针异常?,javascript,ajax,validation,jsp,servlets,Javascript,Ajax,Validation,Jsp,Servlets,我正在做一个项目,在这个项目中,我需要为类别创建一个带有下拉字段的表单。根据所选的类别,我必须填充第二个下拉列表subcaste。 这是我通过AJAX实现的 我还编写了一个方法,该方法将在类别更改时调用,以禁用子种姓下拉框(如果所选类别打开为): if(str=="OPEN"||str=="open"){ document.form.subcaste.disabled=true; } 但当我点击提交按钮时,我在行中得到一个空指针异常: subCaste = request.g
if(str=="OPEN"||str=="open"){
document.form.subcaste.disabled=true;
}
但当我点击提交按钮时,我在行中得到一个空指针异常:
subCaste = request.getParameter("subcaste");
在servlet中。(此行从jsp页面获取子类别的值)
我还做了:选择
在子类别的下拉列表中,选择默认值。但我仍然得到一个空指针异常。我认为禁用下拉框后,servlet根本无法使用该值
详细代码为:
JSP:
检索servlet中的值并将其传递给另一个JSP后:
<%String buffer = "<select name='subcaste' onchange='subCasteChanged(this.value);'><option value='none' selected='selected'>Select SubCaste</option>";
for (int i = 0; i < sizeInfo; i++) {
subCaste = (String) retrievedInfo.get(i);
buffer = buffer + "<option value='" + subCaste + "'>" + subCaste + "</option>";
}
buffer = buffer + "</select>";
response.getWriter().println(buffer);
%>
我不知道如何进行这项工作。请帮帮我
提前谢谢你。是的,你说得对。如果禁用了
,则不会发布其值。因此,当您使用request.getParameter()
获取其值时,它将返回空指针异常
让禁用的
发布其值的标准做法如下
- 添加一个隐藏的输入字段,该字段将提交相同的值,并将值从禁用的
复制到
的onsubmit()事件中的该隐藏字段中
- 在
的onsubmit()事件中重新启用禁用的
subCaste
设置为空,那么如果subCaste
参数为空,您可以尝试将subCaste
变量设置为某个特定值,以查看是否可以解决该问题
if ( request.getParameter("subcaste") != null){
subCaste = request.getParameter("subcaste");
}else{
subCaste = "xxxxx"; //set to a specific value according to your requirement.
}
参考
您必须向我们展示HTML表单的代码和servlet代码的更多相邻元素,以便我们了解。是的,我不是说它会将NPE抛出,我的观点是,因为OP说他认为NPE是因为子类设置为null,因此,我建议他可以尝试将subCaste设置为某个特定值,如果
subCaste
参数为空,看看是否可以解决。我刚刚修改了我的帖子,希望它能更清楚地表达我的观点。
<%String buffer = "<select name='subcaste' onchange='subCasteChanged(this.value);'><option value='none' selected='selected'>Select SubCaste</option>";
for (int i = 0; i < sizeInfo; i++) {
subCaste = (String) retrievedInfo.get(i);
buffer = buffer + "<option value='" + subCaste + "'>" + subCaste + "</option>";
}
buffer = buffer + "</select>";
response.getWriter().println(buffer);
%>
if ( request.getParameter("subcaste") != null){
subCaste = request.getParameter("subcaste");
}else{
subCaste = "xxxxx"; //set to a specific value according to your requirement.
}