首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在liferay 7中获取文档元数据(文档类型值)

在liferay 7中获取文档元数据(文档类型值)
EN

Stack Overflow用户
提问于 2017-10-17 19:35:18
回答 1查看 779关注 0票数 0

我在Liferay 7上工作。我创建了一个文档类型"My Documents“,字段为"Language”,这是一个下拉列表,其值为"English“、”法语“和”西班牙语“。我上传了一个文档并选择了Language value作为法语。现在,我正在尝试获取文档的这个语言值,但返回为空。下面是我使用的代码。

代码语言:javascript
复制
DDMStructure ddmStructure = null;
List<DDMStructure> structures = dLFileEntryType.getDDMStructures();
mainloop:
for (DDMStructure struct : structures) {
    if (struct.getName((Locale.ROOT)).equalsIgnoreCase("My Document")) {
        ddmStructure = struct;
        break mainloop;
    }
}

DLFileEntryMetadata fileEntryMetadata = null;
try {
    fileEntryMetadata = DLFileEntryMetadataLocalServiceUtil.getFileEntryMetadata(ddmStructure.getStructureId(), dlFileEntry.getFileVersion().getFileVersionId());
    if(Validator.isNotNull(fileEntryMetadata)) {
        ServiceContext serviceContextDLFile = new ServiceContext();
        serviceContextDLFile.setCompanyId(companyId);
        serviceContextDLFile.setAttribute("fileEntryTypeId", fileEntryTypeId);
        serviceContextDLFile.setAttribute("fileEntryMetadataId", fileEntryMetadata.getFileEntryMetadataId());
        serviceContextDLFile.setAttribute("DDMStorageId", fileEntryMetadata.getDDMStorageId());
        serviceContextDLFile.setAttribute("fileEntryId", fileEntryMetadata.getFileEntryId());
        serviceContextDLFile.setAttribute("fileVersionId", fileEntryMetadata.getFileVersionId());

        DDMFormValues ddmFormValues = StorageEngineManagerUtil.getDDMFormValues(fileEntryMetadata.getDDMStructureId(), null, serviceContextDLFile);
        List<DDMFormFieldValue> ddmFormFieldValues =  ddmFormValues.getDDMFormFieldValues();
        if(Validator.isNotNull(ddmFormFieldValues) && !ddmFormFieldValues.isEmpty()) {
            for(DDMFormFieldValue formfieldValue : ddmFormFieldValues) {
                if(formfieldValue.getName().equalsIgnoreCase("Language")) {
                    String languageRawName = formfieldValue.getValue().getString(Locale.US);
                    String language = languageRawName.replace("[\"", "").replace("\"]", "");
                }
            }
        }
    }                   
} catch (NoSuchFileEntryMetadataException nsfene) {
//  LOGGER.error("ERROR:: ", nsfene);
} catch(PortalException portalException) {
//  LOGGER.error("ERROR:: " , portalException);
}

在创建文档类型时,我没有为语言字段指定任何预定义的值。当我为Language字段指定任何预定义的值时,上述代码将返回该预定义的值。请告诉我是否遗漏了什么,或者有任何其他方法可以实现这一点。

EN

回答 1

Stack Overflow用户

发布于 2017-10-17 21:42:32

文档库文档中存储的数据未国际化。

我认为您必须始终使用实例的默认语言。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46789179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档