2017-09-09 22 views
1

dataquery1の値をサーブレットに渡そうとしていますが、何も返しません。 がここにJSPの私のコードです:入力ラジオボタンの値がサーブレットに何も返さない

<form id="formquery" action="queryD" method="post"> 
    <div>Search for : &nbsp;&nbsp; 

     <select id="option" class="enjoy-css" style="width:170px" name="optdata">      
    <option>Choose options</option> 
    <option value="scname">Scientific Name</option>      
    <option value="fname">Family Name</option> 
     <option value="location">Location</option> 
     <option value="wateruse">Water Usage</option> 
    </select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <input class="enjoy-css" type="submit" name="Search" value="Search"> 
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <a style="text-decoration: underline" onclick="resetQuery()">Reset</a><br/> 
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

    <div id="opt1" style="display:none;"> 
    Keyword : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <input class="enjoy-css" style="width:120px" placeholder="Enter keyword" type="text" name="dataquery1"> 
    <br><br>  
    </div> 

    <br/> 
    <div id="opt2" style="display:none;"> 
    <input type="radio" name="dataquery1" value="DTC"> DTC<br> 
    <input type="radio" name="dataquery1" value="Engineering"> Engineering<br> 
    <input type="radio" name="dataquery1" value="Business"> Business<br> 
    <input type="radio" name="dataquery1" value="Science"> Science<br> 
    <input type="radio" name="dataquery1" value="Law"> Law<br> 
    </div> 

    <br/> 
    <div id="opt3" style="display:none;"> 
    <input type="radio" name="dataquery1" value="Low"> Low<br> 
    <input type="radio" name="dataquery1" value="Low to moderate"> Low to moderate<br> 
    <input type="radio" name="dataquery1" value="Moderate to high"> Moderate to high<br> 
    <input type="radio" name="dataquery1" value="High"> High<br> 
    </div> 

    </div> 
    </form> 

そしてここopt1のdivのために

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    System.out.println("queryD.java"); 

    //get query from newquery.jsp 
    String dataquery1 = ""; 
    dataquery1 = request.getParameter("dataquery1"); 

    //get option from newquery.jsp 
    String optdata = ""; 
    optdata = request.getParameter("optdata"); 

    System.out.println("OPTDATA : " + optdata + " | KEYWORD : " + dataquery1 + "."); 

私のサーブレットであり、それは完璧に動作します。しかしopt2opt3の場合は何も返しません。ラジオ入力からテキスト入力に変更しようとしましたが、まだ動作しません。

PS:opt1, opt2, opt3ディスプレイはnoneに設定されていますが、私にはその機能があります。

答えて

0

自分のIDEでコードを試して問題を再現しました。問題はこれです。あなたのチェックボックスと1つのテキスト入力はすべて同じ名前属性を持っているので、これをあなたのサーブレットに送ると、要素の配列( "dataquery1")

"keyword"入力を空のままにしておくと、サーブレットを介してアクセスしようとすると何も表示されません。 配列にアクセスする必要があるときに文字列値にアクセスしようとしているためです。 "keyword"入力を空のままにしておかないと、 "dataquery1"のString値を取得しようとすると、配列の最初の値が自動的に取得されます。

フォーム: your form

**デバッグへのネットワークタブ(送信されるかを確認する):** network tab in html inspect

あなたは、配列を使用する必要があなたの変数にアクセスします。 。それの詳細については、this answerをチェックしてください(「dataquery1」は「ユニークでないため)

ここでは、あなたがそれを行う方法です。

String[] test = request.getParameterValues("dataquery1"); 
String value1 = test[0]; 
String value2 = test[1]; 

ide test

+0

いいえ、私は他の用途のために配列としてアクセスできないので、 'dataquery1'を文字列にする必要があります後でもっと複雑な作業をする)。別の名前の3番目のラジオボックス?それでもアレイとして考えていますか? –

+0

次に、一意の名前属性を使用する必要があります。または、キーワードの入力名属性を他のものに変更するだけです。その後、通常のチェックボックスにアクセスすることができます。 –

0

あなたは、両方のラジオに同じ名前を与えています最初のdivのラジオと別の名前の2番目のdivに1つの名前を付けてください。

関連する問題