gpt4 book ai didi

javascript - 如何避免空指针异常?

转载 作者:行者123 更新时间:2023-11-30 06:03:41 26 4
gpt4 key购买 nike

我正在处理一个项目,我需要在其中创建一个带有类别下拉字段的表单。根据选择的类别,我必须填充第二个下拉列表,称为 subcaste。这是我通过 AJAX 实现的。

我还写了一个方法,如果选择的类别是开放的,将在类别更改时调用以禁用子种姓下拉框:

if(str=="OPEN"||str=="open"){
document.form.subcaste.disabled=true;
}

但是当我点击提交按钮时,我在该行中得到一个空指针异常:

subCaste = request.getParameter("subcaste");

在 servlet 中。 (此行从 jsp 页面获取子种姓的值)。

我也做过:<option value="none" selected="selected">Select</option>在子种姓的下拉列表中,以便选择默认值。但是我仍然得到一个空指针异常。我相信在我禁用下拉框之后,该值对 servlet 根本不可用。

详细代码为:

JSP:

<td id='category'><select name='category' onchange="showSubCaste(this.value);">  
<option value="none" selected="selected">Select</option>
<% for (i = 0; i < categorySize; i++) {%>
<% category = (String) categoryArr.get(i);%>
<option value=<%= category%>><%= category%></option>
<% }%>
</select>
</td>
<td >SubCaste</td>
<td id='subcaste'> <select name='subcaste'>
<option value="none">Select</option>
</select>
</td>

JavaScript:

function showSubCaste(str){
...
if(str=="OPEN"||str=="open"){
document.form.subcaste.disabled=true;
document.form.issuingAuthority.disabled=true;
}
else{
document.form.subcaste.disabled=false;
document.form.issuingAuthority.disabled=false;
var url="SubCasteController";
url +="?caste=" +str;
...}

在 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);
%>

我不知道如何处理这个问题。请帮助我。

提前谢谢你。

最佳答案

是的,你是对的。如果<select>被禁用,它的值将不会被发布。因此,当您使用 request.getParameter() 获取其值时,会返回空指针异常。

残疾人的标准做法<select>发布它的值(value)是

  • 添加一个隐藏的输入字段,它将提交相同的值并从禁用的 <select> 中复制值到 <form> 中的这个隐藏字段的 onsubmit()事件

  • 重新启用残疾人<select><form>onsubmit()事件

或者,您认为空指针异常是因为 subCaste设置为null,你可以尝试设置subCaste如果 subCaste 变量为某个特定值parameters为null,看看能不能解决。

if (  request.getParameter("subcaste") != null){
subCaste = request.getParameter("subcaste");
}else{
subCaste = "xxxxx"; //set to a specific value according to your requirement.
}

引用

HTML form readonly SELECT tag/input

关于javascript - 如何避免空指针异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6632147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com