2017-10-17 4 views
0

私はLiferay 7で作業しています。「英語」、「フランス語」、および「フランス語」の選択ドロップダウンであるフィールド「言語」を持つドキュメントタイプ「マイドキュメント」を作成しました。 "スペイン語"。私はドキュメントをアップロードし、Frenchとして言語値を選択しました。今、私はドキュメントのこの言語値を取得しようとしているが、空白が返されます。以下は私が使用しているコードです。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); 
} 

ドキュメントタイプの作成中に、言語フィールドに定義済みの値を指定していません。言語フィールドにあらかじめ定義された値を与えているとき、上記のコードはそのあらかじめ定義された値を返しています。 私は何かが不足しているか、これを達成するための他のアプローチがあるかどうかを教えてください。

答えて

1

ドキュメントライブラリドキュメントのストアドデータは、国際化されていません。

いつもインスタンスのデフォルト言語を使用する必要があると思います。

+0

reply @ jorgediaz-lrありがとうございます。私はあなたが 'String languageRawName = formfieldValue.getValue()。getString(Locale.US);'行について話していると思います。しかし、.getString()メソッド自体にはLocaleパラメータが必要です。私は、 "en_US"を返す 'formfieldValue.getValue()。getDefaultLocale()'でチェックしました。 私の質問で私が明確でないかどうか教えてください。 – Ashwini

関連する問題