【问题标题】:Can I get Journal article resource UUID from article ID?我可以从文章 ID 中获取期刊文章资源 UUID 吗?
【发布时间】:2017-02-16 08:16:08
【问题描述】:

我创建了一个 Liferay WCM 结构,其中包含用户输入现有 Web 内容 ID 的字段。我想用那个IDget the resource UUID

我怎样才能做到这一点?


更新:

我在 Parkash Kumar 的帮助下使用 FreeMarker 语言而不是 Velocity,它可以工作,但使用的是 Id:

<#assign EntryId = 456017 /><#-- id -->
<#assign EntryArticleId= 444831 /><#-- articleId -->

<#assign articleId = EntryId?number />
<#assign articleService = objectUtil("com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil") />
<#assign article = articleService.getJournalArticle(articleId) />
<#assign articleResourceId = article.getArticleResourceUuid() />

当我使用articleId 时,我收到此错误:

com.liferay.portlet.journal.NoSuchArticleException: No JournalArticle exists with the primary key 444831

【问题讨论】:

  • 是的,您可以通过getUuid()JournalArticle对象获取它
  • 我为您提供了FreeMarker 解决方案,因为您没有提到您在模板中使用了Velocity
  • 它们很相似。但是,每篇文章都有一个id、一个resourcePrimKey和一个articleId,它们是由6个数字组成的唯一标识符。例如,我的文章“Hello World”具有以下 ID:id=456017resourcePrimKey=444833articleId=444831。当我使用articleId getJournalArticle() 时它不起作用,但当我使用id 时它起作用。为什么?
  • 你有groupId吗?如果是,那么您可以使用服务中的getArticle(groupId, articleId)
  • 没问题,其实我之前没有看到其他方法。

标签: java liferay liferay-6 freemarker


【解决方案1】:

如果您有 ID,您可以通过这种方式获取 UUID。

    JournalArticle article = JournalArticleLocalServiceUtil.getArticle(articleId);
    article.getUuid();

【讨论】:

    【解决方案2】:

    首先使用$serviceLocator.findService方法定位JournalArticleLocalServiceUtil

    #set($articleService = $serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil"))
    

    然后使用getArticle方法通过id(主键)/articleId获取文章,如下:

    #set($id = xxx) here `xxx` is your `$id (primary key)`
    #set($articleById = $articleService.getArticle($id))
    
    #set($articleId = xxx) here `xxx` is your `$articleId`
    #set($articleByArticleId = $articleService.getArticle($groupId, $articleId))
    

    现在,您可以访问$article 对象的所有属性:

    #set($articleResourceId = $article.getArticleResourceUuid())
    #set($articleUUId = $article.getUuid())
    

    【讨论】:

    • 非常感谢@ParkashKumar
    • 欢迎,编码愉快!
    • 当我在 FreeMarker 中使用 articleId 时,它不起作用。我添加了问题的更新。
    • 错误提示,您的数据库不包含JournalArticle for given id。
    猜你喜欢
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 2017-02-22
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多