Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Commons文件上载从选择字段检索多个值?_Java_Servlets_File Upload_Apache Commons Fileupload - Fatal编程技术网

Java 如何使用Commons文件上载从选择字段检索多个值?

Java 如何使用Commons文件上载从选择字段检索多个值?,java,servlets,file-upload,apache-commons-fileupload,Java,Servlets,File Upload,Apache Commons Fileupload,更新:问题最终是闪存组件本身。它没有正确编译元素中的多个值。我通知了开发人员,他们实施了一个变通方法。Commons FileUpload确实支持每个接受答案的多个值 我有一个表单enctype=“multipart/form data”,其中有一个 <select name="XX" multiple="multiple"> 并继续通过 // Process a regular form field if (item.isFormField()) { String nam

更新:问题最终是闪存组件本身。它没有正确编译元素中的多个值。我通知了开发人员,他们实施了一个变通方法。Commons FileUpload确实支持每个接受答案的多个值

我有一个表单enctype=“multipart/form data”,其中有一个

<select name="XX" multiple="multiple">
并继续通过

// Process a regular form field
if (item.isFormField()) {
    String name = item.getFieldName();
    String value = item.getString();
}
我遇到的问题是item.getString()仅返回选择字段中的第一个选定值;无论我选了多少项,我只得到第一项

同样,当我使用标准servlet方法提取参数时,即

final String[] values = request.getParameterValues("XX");
值为空,我假设这是因为表单是多部分编码的

如何从多重选择字段中检索这些多重选择值


这个(未回答的)问题也是由另一位作者提出的。

事实上,几个项可以具有相同的字段名,您只需将相同字段名的所有项字符串值添加到字符串集合中,然后将该集合转换为数组

在那里找到一些信息:

以上链接不起作用,如果其他人面临同样的问题,下面介绍如何获取所有值-

使用Commons File Upload从选择字段检索多个值-

   List items = upload.parseRequest(request);
   Iterator iter = items.iterator();

    while (iter.hasNext()) {
        FileItem item = (FileItem) iter.next();

        if (item.isFormField()) {
           String name = item.getFieldName();
           String value = item.getString();

        if (name.equals("multi-select"))
            completeSet = value;
     }
那么completeSet将只有第一个值。multi-select的所有其他值也位于同名项中(此处multi-select)。 因此,您所要做的就是逐个获取所有值,然后将其转换为所需的数据类型(即-收集列表中的所有内容并将其转换为字符串[]:))例如-

List completeSet=new ArrayList();
if(name.equals(“多选”))
完成设置。添加(值);

这样,在completeSet结束时将拥有所有的值集。

您使用的是哪个flash upload组件。。?基本上我有相同的要求,但不能得到正确的闪存上传组件。我对它非常满意,从我第一次报告这个bug到为我发布一个固定版本,开发者很快就实现了转变。HTTP错误:404
   List items = upload.parseRequest(request);
   Iterator iter = items.iterator();

    while (iter.hasNext()) {
        FileItem item = (FileItem) iter.next();

        if (item.isFormField()) {
           String name = item.getFieldName();
           String value = item.getString();

        if (name.equals("multi-select"))
            completeSet = value;
     }
List<String> completeSet=new ArrayList<String>();
if(name.equals("multi-select"))
     completeSet.add(value);