2011-07-09 15 views
1

私はカテゴリのドロップダウンフィールドを持つフォームを作成する必要があるプロジェクトに取り組んでいます。選択したカテゴリに応じて、サブキャストと呼ばれる2番目のドロップダウンを設定する必要があります。 これは私がAJAXを通して達成しているものです。Nullポインタの例外を回避するにはどうすればよいですか?

私はまた、選択したカテゴリが開いている場合はサブカーストのドロップダウンボックスを無効にするには、カテゴリの変化に呼び出されるメソッドを書いた:

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

しかし、私は、送信ボタンを打ったとき、私は取得サーブレット内のNULLポインタ例外:

subCaste = request.getParameter("subcaste"); 

(この行はjspページからサブキャストの値を取ります)。

私はまた、サブキャストのドロップダウンで<option value="none" selected="selected">Select</option> を実行して、デフォルト値が選択されているようにしました。しかし、私はまだnullポインタの例外が発生します。私は、ドロップダウンボックスを無効にした後は、値がサーブレットで利用できないと考えています。

詳細なコードは次のとおり

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; 
...} 

サーブレットの値を取得し、別の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); 
%> 

私はこれを進める方法を知らない。私を助けてください。

ありがとうございます。

+2

あなたは私たちに私たちがどんな考えを持っているため、サーブレットコードの隣接する要素のHTMLフォームおよび多くのためのコードを表示する必要があります。 – jfriend00

答えて

1

はい、あなたは正しいです。 <select>が無効の場合、その値はPOSTEDされません。したがって、request.getParameter()を使用してその値を取得すると、NULLポインタ例外が返されます。

その値を投稿する無効 <select>を取得するための標準的な慣行が

  • <form>に同じ値を提出し、この隠しフィールドに無効<select>から値をコピーします非表示の入力フィールドを追加している

    " S onsubmit()イベント

または

  • 再有効化あなたはsubCasteがnullに設定されているため、nullポインタ例外があると考えているようsubCasteパラメータがある場合<form>さんonsubmit()イベントで<select>無効

または代わりに、あなたはいくつかの特定の値にsubCaste変数を設定することを試みることができます解決できるかどうかを調べるには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

+0

はい、私はそれがNPEをそこに投げることを意味しません、私のポイントは、OPは彼がsubCasteがnullに設定されているのでNPEがあると信じていたので、私はちょうど彼がsubCasteを特定の値それが解決できるかどうかを確認するために 'subCaste'パラメータはnullです。私の投稿を改訂しました。私の見解をより明確に表現できることを願っています。 –

+0

ありがとう、私のコメントを削除しました。 – home

関連する問題