无法访问文本字段值

Can't access text field value

我有这个 html 将 orderID 的值传递给一个完全正常工作的模态。但是,在 servlet 上,我似乎无法访问 orderID 的值,出现 java.lang.NumberFormatException: null 的错误。这是我的代码:

Html:

<a data-toggle="modal" class="clickThis" data-id="<%=o.getOrderID()%>" href="laboratories.html#myModal">
    <i class="fa fa-send">

    </i>
</a>

Javascript:

<script>
    $(document).on("click", ".clickThis", function () {
        var orderID = $(this).data('id');
        $(".modal-body #orderid").val(orderID);
    });
</script>

模态:

<div class="modal-body">
    <input name="orderid" id="orderid">
    <table>
        <tr>
            <td>
                Upload File: &nbsp;
            </td>
            <td>
                <input type="file" name="file" id="file" accept="image/png, .txt, application/pdf, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword"/> <br>
            </td>
        </tr>
    </table>
</div>

Servlet:

        String orderid = request.getParameter("orderid");
        System.out.println(orderid);
        int orderID = Integer.parseInt(orderid);
        System.out.println(orderID);

在第一个 System.out.println,我得到一个 null。在那之后,我在这一行中收到错误:int orderID = Integer.parseInt(orderid);

一个原因可能是您正在使用 enctype="multipart/form-data",在这些情况下,除了 input type="file" 之外,其他参数都返回为 null。看到这个 answer

您可以检索参数,但不能以正常方式检索。 request.getParameter 将不起作用。

您必须从多部分请求流中检索它,这有些复杂。您可以使用 Apaceh commans file upload api。这将使这项任务变得容易得多。

FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
Iterator<FileItemStream> fileIter = upload.getItemIterator(request);

HashMap<String,String> parameters = new HashMap<String,String>()
while(fileIter.hasNext()){
  FileItemStream fileItem = fileIter.next();
  if(fileItem.isFormFIeld()){
     paramName = item.getFieldName();
     InputStream stream = item.openStream();
     paramValue =  Streams.asString(stream);
     parameters.put(paramName,paramValue )
  }else{
     InputStream instrm =  item.openStream();
     //Receive and save File
  }

}

希望这对您有所帮助...