输入单选按钮值在servlet中不返回任何内容

时间:2017-09-09 19:58:31

标签: jsp servlets

我正在尝试将$errors->B的值传递给servlet但它什么都不返回。 这是我在jsp中的代码:

dataquery1

这是我的servlet

<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>

对于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 + "."); div,它完美无缺。但对于opt1opt2,它什么都不返回。我试图从无线电输入更改为文本输入,但它仍然无法正常工作。

PS:opt3显示设置为opt1, opt2, opt3,但我有调用它的函数。

2 个答案:

答案 0 :(得分:0)

我在自己的IDE中尝试了您的代码并重现了您的问题。问题是这个。您的复选框和1个文本输入都具有相同的名称属性,因此当您将其发送到您的servlet时,您得到的是元素数组(&#34; dataquery1&#34;)

如果你留下&#34;关键字&#34;输入为空,当您尝试通过servlet访问它时,您将看不到任何内容。因为在您需要访问阵列时尝试访问String值。如果你没有留下&#34;关键字&#34;输入为空并尝试获取&#34; dataquery1&#34;的String值,您将自动获得该数组的第一个值。

您的表单 your form

**要调试的网络选项卡(查看发送的内容):** network tab in html inspect

要访问变量,必须使用数组。 (因为&#34; dataquery1&#34;不是唯一的&#34;)有关详细信息,请查看this answer

以下是您的操作方法:

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

ide test

答案 1 :(得分:0)

您为两个不同div中的两个单选按钮指定了相同的名称。给第一个div的所有无线电给一个名字,给第二个div给另一个名字。