【问题标题】:How to get the webcontent of an AssetEntry with liferay?如何使用 liferay 获取 AssetEntry 的网页内容?
【发布时间】:2016-03-21 22:15:15
【问题描述】:

我得到这样的资产条目:

List<AssetEntry> emt = AssetEntryLocalServiceUtil.getEntries(q);

资产条目有很多方法,如assetEntry.getTitle() - 但不能获取来源(输入网页内容的答案)。它在 liferay taglib 中工作,如下所示: &lt;liferay-ui:journal-article articleId="74550" groupId="10164" &gt;&lt;/liferay-ui:journal-article&gt;

如何使用 AssetEntry 获取网页内容的内容?

【问题讨论】:

    标签: java liferay


    【解决方案1】:

    assetEntry 允许您通过组合 getClassName()(即“com.liferay.portlet.journal.model.JournalArticle”)和 getClassPK()(为您提供 Web 内容的 ID)来检索 Web 内容为assetEntry。

    有了这些信息,您可以拨打以下电话:

    JournalArticle wc = JournalArticleLocalServiceUtil.getArticle(assetEntry.getClassPK());
    

    【讨论】:

      【解决方案2】:

      您可以像这样访问上面提到的 xmlString 形式的内容

      JournalContentUtil.getDisplay(journalArticle.getGroupId(), journalArticle.getArticleId(),
                  null, null, locale.toString(), xmlRequest);
      

      xmlRequest可以像这样生成表单请求和响应

      String xmlRequest = PortletRequestUtil.toXML(request,response);
      

      JournalArticle 可以像上面提到的 Mark 这样获得

       JournalArticle article = JournalArticleLocalServiceUtil.getLatestArticle(assetEntry.getPrimaryKey());
      

      这适用于 Liferay 6.1.1,并且应该适用于旧版本。

      【讨论】:

        【解决方案3】:
        AssetEntry assetEntry = ...;
        
        JournalArticle article = JournalArticleLocalServiceUtil.getLatestArticle(assetEntry.getPrimaryKey());
        String xmlString = article.getContent(); //whole xml content with all translations
        //or
        String xmlString = article.getContentByLocale(languageId); //languageId is some like 'en', 'es' ...
        

        【讨论】:

        • 这总是抛出一个错误,比如“主键 722473 不存在 JournalArticle”。没有 JournalArticle 可以存在 AssetEntry 吗?
        • 是的@Nenotlep。 AssetEntry 本身不需要是 JournalArticle。引用 Liferay 论坛:“资产可以是任何东西,一篇博客文章、一篇期刊文章、一个投票问题/答案……AssetEntry 是代表特定资产的实体。”
        【解决方案4】:
         JournalArticleResource journalArticleResourceObj = JournalArticleResourceLocalServiceUtil.getJournalArticleResource(ae.getClassPK()); 
         JournalArticle journalArticleObj = JournalArticleLocalServiceUtil.getArticle(themeDisplay.getScopeGroupId(),journalArticleResourceObj.getArticleId());  
        

        journalArticleObj 包含所有必需的数据。

        【讨论】:

          【解决方案5】:

          我没有尝试过下面的代码,但这是在资产发布者的默认显示(摘要)中工作的代码。

          AssetRendererassetRenderer = (AssetRenderer)request.getAttribute("view.jsp-assetRenderer"); 字符串摘要 = assetsRenderer.getSummary(locale);

          您可以查看文件中的代码:/liferay/liferay620/tomcat-7.0.42/webapps/ROOT/html/portlet/asset_publisher/display

          【讨论】:

            猜你喜欢
            • 2011-12-15
            • 1970-01-01
            • 1970-01-01
            • 2019-07-01
            • 2010-11-06
            • 2013-07-28
            • 2013-11-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多