2012-10-12 44 views
0

Web內容設置我結構有一個應用領域:「文檔的媒體」。的Liferay:怎麼到網絡內容的文件的相對路徑和媒體

通過此字段用戶可以添加各種文件,然後顯示在我的.xhtml中。

用戶可以將此「文檔和媒體」字段可重複添加更多文件。

我怎麼能遍歷所有添加的文件並獲得他們的相對路徑。

如果我的文檔和媒體領域是不可重複的,我可以得到這樣的相對路徑:

public String getWebContentTitle(String title, String nodeName) throws PortalException, SystemException { 
     FacesContext context = FacesContext.getCurrentInstance(); 
     ThemeDisplay themeDisplay = (ThemeDisplay) context.getExternalContext().getRequestMap().get(WebKeys.THEME_DISPLAY); 
     long groupId = themeDisplay.getScopeGroupId(); 
     JournalArticle article = JournalArticleLocalServiceUtil.getArticleByUrlTitle(groupId, formatUrlTitle(title)); 
     String languageKey = context.getExternalContext().getRequestLocale().toString(); 
     JournalArticleDisplay articleDisplay = JournalContentUtil.getDisplay(groupId, article.getArticleId(), article.getTemplateId(), languageKey, themeDisplay); 
     JournalArticle journalArticle = JournalArticleLocalServiceUtil.getArticle(groupId, article.getArticleId()); 
     String myContent = journalArticle.getContentByLocale(languageKey); 

     if (nodeName != null) { 
      String nodeText=getParseValue(nodeName, journalArticle, myContent); 
      return nodeText; 
     } else 
     { 
      String ret=articleDisplay.getContent(); 
      return ret; 
     } 
    } 

    private String getParseValue(String fieldname, JournalArticle article, String locale) { 
     String nodeText = ""; 
     try { 
       Document document = SAXReaderUtil.read(article.getContentByLocale(locale)); 
       Node node = document.selectSingleNode("/root/dynamic-element[@name='" + fieldname +"']/dynamic-content"); 
       nodeText = node.getText(); 
     } catch(Exception e){ 

     } 
     return nodeText; 
    } 

這個方法返回相對路徑來我補充說明文件(說horses.pdf)。

我怎麼能得到相對路徑,通過「文檔和媒體領域」增加了更多的文件,這是可重複的,並已定義的特定變量名(說HorsesPdfs?)

任何幫助將不勝感激!

Documents and media field - repeatable (green plus on picture)

+0

如果我理解正確,你有多個JournalArticle,你想做什麼,獲取文章的所有內容,並找到鏈接的文件? –

+0

是的,我會有很多期刊文章。他們每個人都有一個「文件和媒體」字段。這個字段是可重複的。如何通過可重複的「文檔和媒體」字段遍歷所有添加的文件? – necker

+0

實際上我有很多馬。每個人都有自己的網站和期刊文章。並且在馬的每個站點上可以添加很多pdf文件。 我可以通過上述方法獲取網頁內容,並傳遞正確的「節點名稱」。我的問題是如何獲得可重複的「文檔和媒體」參賽作品的內容/路徑? – necker

回答

1

你可以嘗試

DLAppLocalServiceUtil.getFileEntries(REPOSITORY_ID, FOLDER_ID), probably better than DLFileEntry as its the new approach that takes workflows in consideration. 

REPOSITORY_ID = parent group, which is by default LR´s one GroupLocalServiceUtil.getGroup(COMPANY_ID, GroupConstants.GUEST).getGroupId() 

COMPANY_ID = PortalUtil.getDefaultCompanyId(); //If just one instance, if not, better to play with CompanyLocalServiceUtil to match your Id 

文件夾ID,您可以使用舊的根文件LR's媒體&的是

FOLDER_ID = DLFolderConstants.DEFAULT_PARENT_FOLDER_ID; //or find it e.g DLAppLocalServiceUtil.getFolder(repositoryId, DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, FOLDER_NAME).getFolderId(); if you programtically used addFolder(long userId, long repositoryId, long parentFolderId, String name, String description, ServiceContext serviceContext)