无法访问文本字段值

时间:2015-03-27 07:59:13

标签: java jquery servlets file-upload multipartform-data

我有这个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);

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可以以正常方式检索参数但不能。 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
  }

}

希望这会有所帮助......