1

要求:将父文件夹、子文件夹及其文件从特定位置添加到文档和库中。

案例 1:如果文件夹已经存在,则获取该 ID 并添加文件

(这里我使用 addFileEntry(repositoryId, folderId,sourceFileName, mimeType, title, description, changeLog, is, size, serviceContext)的是DLAppServiceUtil类)。

案例2:如果文件夹不退出添加文件夹然后添加文件

(这里我用于添加类的文件夹 addFolder()方法DLAppServiceUtil

我的情况是性能缓慢。那就是问题所在。

4

1 回答 1

3

您使用的是哪个版本的 Liferay?

当前趋势在 6.1+ 中如下所示(好吧,当它被正确实现时,但您可以或多或少地在新DLApp实现的基础上构建):

  1. 找到父文件夹 ID。DLFolderConstancts如果您没有,请使用默认值。
  2. 假设该文件夹存在并尝试获取它。
  3. NoSuch***Exception如果没有找到它会抛出一个。如果是这种情况,请手动创建文件夹

你可以这样做:

private Folder getOrCreateFolder(final ServiceContext serviceContext,
        final long userId, final Group group, String folderName)
        throws PortalException, SystemException {
    final long parentFolderId = DLFolderConstants.DEFAULT_PARENT_FOLDER_ID;
    final long repositoryId = group.getGroupId();

    try {
        final Folder prev = DLAppLocalServiceUtil.getFolder(
            repositoryId, parentFolderId, folderName);
        return prev;
    } catch (final NoSuchFolderException e) {
        final Folder newFolder = DLAppLocalServiceUtil.addFolder(userId,
            repositoryId, parentFolderId, folderName,
            "My cool new folder", serviceContext);
        return newFolder;
    }
}

文档和资料绝对泄露了您为什么这样称呼addFolder(),请查看门户网站源代码。这不是那么微不足道,但也不是那么难习惯。

于 2013-10-29T12:31:05.607 回答