掲示板

get metadata form fileEntry

11年前 に Andrea Baglio によって更新されました。

get metadata form fileEntry

New Member 投稿: 3 参加年月日: 12/05/30 最新の投稿
Hi,
i've created a new document type and a metadata set throug the Documents and media plugin. Then i've created a new document. Now i would like to access to my custom metadata using Velocity variables in my theme template.
Googling and searching on your forum, i've produced this non-working code:

#set($service = $serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFileEntryLocalService"))
#set($metadata = $serviceLocator.findService("com.liferay.portlet.dynamicdatamapping.service.DDMStructureLocalService"))
#set($metadata2 = $serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFileEntryMetadataLocalService"))

#set($gid = $getterUtil.getLong($request.get("theme-display").get("scope-group-id")))

$service.getBeanIdentifier()<br>

#set($doc = $fileSelection.getData())

#set ($fileTitle = "target_file")

#set ($tmp = {})
#set ($decoder = $tmp.class.forName("java.net.URLDecoder").newInstance())

#set ($fileTitle = $decoder.decode($fileTitle, "UTF-8"))

#set ($dlService = $serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFileEntryLocalService"))
#set ($fileEntry = $dlService.getFileEntry($gid, $fid, $fileTitle))

$fileEntry

#*{uuid=87dd34ac-f91d-4ad9-97ae-88cb27064b30, fileEntryId=12614, groupId=88, companyId=1, userId=2, userName=Test Test, versionUserId=2, versionUserName=Test Test, createDate=2012-05-30 11:33:56.974, modifiedDate=2012-05-30 11:33:56.974, repositoryId=88, folderId=0, name=201, extension=jpg, mimeType=image/jpeg, title=target_file, description=, extraSettings=, fileEntryTypeId=12613, version=1.0, size=8864, readCount=1, smallImageId=0, largeImageId=0, custom1ImageId=0, custom2ImageId=0} *#


#set($ddmstruct = $metadata.getDLFileEntryTypeStructures(12613))
#set($fileVersionId=$fileEntry.getFileVersion().getFileVersionId())
#set($structureId = $ddmstruct.getStructureId())
$metadata2.getFileEntryMetadata($structureId,$fileVersionId)

Everything works good instead last row, where the engine call the toString method on it and print out the row as is.

Any hints? thanks
thumbnail
11年前 に Ketan Savaliya によって更新されました。

RE: get metadata form fileEntry

Regular Member 投稿: 117 参加年月日: 11/03/03 最新の投稿
Hi There,

below is some code statement that is help you to get dlfile metadata in your template.


#set ($dlService = $serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFileEntryLocalService"))
#set($metadata2 = $serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFileEntryMetadataLocalService"))
#set($type = $serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFileEntryTypeLocalService"))
#set($gid = $getterUtil.getLong($request.get("theme-display").get("scope-group-id")))


---Start---
#set($fileEntryTypeId = $fileEntry.getFileEntryTypeId())

#set ($dlFileEntryType = $type.getFileEntryType($fileEntryTypeId))

#set ($ddmStructures = $dlFileEntryType.getDDMStructures())

#foreach ($ddmStructure in $ddmStructures)
#set($dlFileEntryMetadata = $metadata2.getFileEntryMetadata($ddmStructure.getStructureId(), $fileEntry.getLatestFileVersion(true).getFileVersionId()))

<br/>

$dlFileEntryMetadata

#end

---END-----

NOTE : i assume you have $fileEntry objeect in vm
thumbnail
9年前 に Matej Šípka によって更新されました。

RE: get metadata form fileEntry

New Member 投稿: 7 参加年月日: 14/10/20 最新の投稿
Thank you Ketan, it is a very helpful advice. emoticon
9年前 に Eric Smith によって更新されました。

RE: get metadata form fileEntry

Junior Member 投稿: 66 参加年月日: 12/08/28 最新の投稿
Check Eduardo's post:

https://www.liferay.com/community/forums/-/message_boards/message/27159995

Using getFieldsMap is a lot easier:
fileEntry.getFieldsMap(dlFileVersion.getFileVersionId())