Liferay中获取文档元数据(文档类型值)7

问题描述:

我正在Liferay 7上工作。我创建了一个文档类型“我的文档”,其中字段“语言”是一个选择下拉列表,其值为“英语”,“法语”和“西班牙”。我上传了一个文件,并选择了语言值作为法语。现在我正在尝试为文档获取该语言值,但返回空白。以下是我正在使用的代码。Liferay中获取文档元数据(文档类型值)7

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); 
} 

创建文档类型时,我没有给出语言字段的任何预定义值。当我给出语言字段的任何预定义值时,上面的代码将返回该预定义的值。 请告诉我是否缺少一些东西,或者有其他方法可以实现这一点。

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

我认为你必须总是使用实例的默认语言。

+0

谢谢你的回复@ jorgediaz-lr。我想你在谈论'String languageRawName = formfieldValue.getValue()。getString(Locale.US);'line。但是.getString()方法本身需要一个Locale参数。我检查了'formfieldValue.getValue()。getDefaultLocale()'这是返回“en_US”。 如果我不清楚我的问题,请让我知道。 – Ashwini