无法迭代List <multipartfile>

时间:2016-01-29 11:03:02

标签: java iterator multipartform-data

以下是我从WebPage上传多个文件的功能。我的文件位于MultipartFile列表中 - &gt;文件变量。我无法迭代每个文件。但是log.info(“文件”+文件)打印文件[]。这意味着文件返回'[]'。这是什么意思?我哪里错了?

public String addNodeAndDocNew(TreeType treeType, ObjectId parentNodeId, NodeType nodeType, String displayName, String attrList, List<MultipartFile> files, String userId,
        String passwd) {
    String result = "";
    log.info("file"+ files);
    log.info("userId=" + userId);
    log.info("passwd=" + passwd);
    log.info("nodeType=" + nodeType);
    log.info("displayName=" + displayName);
    if (attrList != null)
        log.info("attributesList=" + attrList.toString());
    ObjectId nodeId = null;
    for(MultipartFile file : files)
    {
        log.info("Yess");
        if (file.isEmpty()) {
            log.info("Nothing attached, just adding node, not the doc");
            nodeId = addNode(treeType, parentNodeId, nodeType, displayName, attrList, userId, passwd);
            if (nodeId != null)
                log.info("Just added node, no doc sent");
        }

        else {
            log.info("file=" + file.getOriginalFilename());
            nodeId = addNode(treeType, parentNodeId, nodeType, displayName, attrList, userId, passwd);
            if (nodeId != null) {
                docService.uploadDoc(nodeId, file, userId, passwd);
                log.info("Added node, and doc");
            } else {
                log.info("addNode() returned null");
            }
        }

    if (nodeId != null) {
        log.info("addNodeAndDoc completed for node id : " + nodeId.toString());
        result += nodeId.toString()+ "@@";
    } else
        return null;
    }
    log.info("Yess1");
    return result;
}

2 个答案:

答案 0 :(得分:0)

  

但是log.info(文件)打印了文件[]。

所以,你给定的数组是空的。这就是为什么你不能迭代它! ;)

答案 1 :(得分:0)

您正在使用增强型JsonArray result = Json.createArrayBuilder() .add(Json.createArrayBuilder().add(1).add(12)) .add(Json.createArrayBuilder().add(2).add(5)) .build(); 循环和增强型for循环保护本身失败,如果它尝试迭代的列表是空的,则不执行该块。这正是这里发生的事情。

在您可能遇到for的情况下检查empty始终是一个好习惯。