【问题标题】:Input radio button value returns nothing in servlet输入单选按钮值在 servlet 中不返回任何内容
【发布时间】:2017-09-09 19:58:31
【问题描述】:

我正在尝试将 dataquery1 的值传递给 servlet,但它什么也没返回。 这是我在 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>

这是在我的 servlet 中

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 + ".");

对于opt1 div,它可以完美运行。但是对于opt2 和opt3,它什么也不返回。我试图从无线电输入更改为文本输入,但它仍然不起作用。

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

【问题讨论】:

    标签: jsp servlets


    【解决方案1】:

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

    如果您将“关键字”输入留空,当您尝试通过 servlet 访问它时,您将什么也看不到。因为您在需要访问数组时尝试访问字符串值。如果不将“keyword”输入留空并尝试获取“dataquery1”的String值,则会自动获取数组的第一个值。

    您的表单:

    **要调试的网络选项卡(查看发送的内容):**

    要访问您的变量,您必须使用数组。 (因为“dataquery1”不是唯一的“)查看this answer了解更多信息。

    这是你的做法:

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

    【讨论】:

    • 好的,但是我需要 dataquery1 是一个字符串,因为我无法将它作为数组访问以供其他用途(稍后会进行更复杂的工作)。如果我用不同的名称重命名第二个和第三个单选框怎么办?它是否仍然认为是一个数组?
    • 那么你需要使用唯一的名称属性。或者只是将您的关键字输入名称属性更改为其他内容。然后你就可以正常访问复选框了。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-08
      • 1970-01-01
      • 2016-03-30
      • 2017-07-15
      • 2016-01-12
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      相关资源
      最近更新 更多