想获得select下拉框中选中的值,通过form提交到servlet中后无法获得,怎么回事?
例如:
在页面上定义了
<select name="xx">
<option value='aaa'>aaa</option>
<option value='bbb'>bbb</option>
</select>
通过form确认已经提交到了servlet中,再通过request.getParamter("xx")却为null!无法获得!
这到底怎么回事?!
顺便说一下,我的表单还有是用来上传文件的,form中有file,难道有问题吗?如果有,怎样解决?

解决方案 »

  1.   

    就是用submit直接提交的啊,测试已经转到了对应的servlet中,不过就是用request.getParameter()得不到值!
    是不是因为我的这个form是用来上传文件的这么做就有问题了吗?!
      

  2.   

    原来做的是下面的文件导入上传功能,一切正常!导入设备是后变添加到form中的,是遍历处所有设备后,让用户从select下拉框中进行选择,然后到servlet中我根据用户选择的进行处理。
    <form action="../fileupload" method="post" enctype="multipart/form-data" name="fileuploadForm" target="_self">
     <table  width="100%" height="100%"  border="0" align="center" cellpadding="0" cellspacing="0">
       <tr>
        <td width="120" bgcolor="#FFFFFF"> <div align="right" ><font color="0B188E">选择导入设备:</font></div></td>
        <td>
          <select name="deviceName" id="deviceName" onChange="">
          <%for(int i=0;i<list.size();i++){ %>
    <option value='<%=list.get(i)[0] %>'><%=list.get(i)[0] %></option>
          <%} %>
          </select>
        </td>
       </tr>
       
       <tr>
         <td width="120" bgcolor="#FFFFFF"> <div align="right" ><font color="0B188E">选择导入文件:</font></div></td>
         <td><input type="file" name="file"></td>
       </tr>
       <tr>
         <td align="left">&nbsp;&nbsp;&nbsp;<input type="submit" name="submit"  value="确定"></td>
       </tr>
      </table>
    </form>
      

  3.   

    要不就是你的name写错了,要不就是你的option本来就没有值,好好检查一下!
      

  4.   

    肯定会出问题。
    <form action="../fileupload" method="post" enctype="multipart/form-data" name="fileuploadForm" target="_self"> 
    因为你提交的编码已经变成了enctype="multipart/form-data",这样就没办法用text/html提交数据,所以你get到的为空。
    所以如果你要提交其他内容,要采用其他办法。不能用一个表单提交。
      

  5.   

    那我改如何处理呢?!既要传文件,又要传递select的值。
      

  6.   

    可以传递,因为表单数据是以二进制的方式提交的,所以不能通过getParamter函数获取,可以通过getInputStream获取到表单数据,但要楼主把这些数据解析出来估计够呛.如果你用的是Struts,那么通过Struts Form的属性很容易的就可以取到提交的表单域的值(包括上传的文件),JSF也是相当简单的.
      

  7.   

    ls师兄,我现在问题不在于上传文件,那个没问题,关键是要得到我传递过去的select下拉框的选中值.
      

  8.   

    楼主兄弟啊,你是用Struts吗? 那你用StrutsForm试一试吧,通过form.getXxx(),就可以得到xxx的值了.
    如果用的是其它框架,应该也有二进制上传的解决方案,如果你用的是纯jsp或servlet,那就找个第三方上传组件吧,因为让你从二进制流中解析出你要的下拉框的值实在难为你了.
      

  9.   

    用apache的fileUpload组件吧,带有使用未例,我贴点代码片断给你吧--虽然我很不喜欢贴代码,我加了点注释注意,是片断
    ServletFileUpload upload = new ServletFileUpload(factory);// 解析request,将表单提交的元素放入List
    List /* FileItem */ items = upload.parseRequest(request
    //遍历List里的第一项,item可能有两种,一种是FormField,你所说的select当然属性FormField,另一种是非FormField,也就是上传的文件
    Iterator iter = items.iterator();
    while (iter.hasNext()) {
    ...
    if (item.isFormField()) {
        String name = item.getFieldName();
        String value = item.getString();
        ...
    }
    if (!item.isFormField()) {
        String fieldName = item.getFieldName();
        String fileName = item.getName();
        String contentType = item.getContentType();
        boolean isInMemory = item.isInMemory();
        long sizeInBytes = item.getSize();
        ...
    }
    ...
    }
    ...
      

  10.   

    用javazoom的uploadbean,http://www.javazoom.net/jzservlets/uploadbean/documentation/api.html
    可以用javazoom.upload.MultipartFormDataRequest,直接获取
      

  11.   

    是不是应该用这个request.getParameterValues("name")。
    试试看