【问题标题】:Add new webcontent version in Liferay在 Liferay 中添加新的网页内容版本
【发布时间】:2014-08-28 12:46:45
【问题描述】:

我想在 Liferay 中编辑一个 web 内容(期刊文章),并从自定义 portlet 中创建一个新版本。我使用以下相关参数调用JournalArticleLocalServiceUtil.addArticle() 方法:

articleId = article.getArticleId();
autoArticleId = false;
version = article.getVersion()+0.1;

所以旧articleId,版本增加了。

此代码在 LR 6.1.30EE 中有效,但在 6.1.20EE 和 6.1.1CE 中我得到了DuplicateArticleIdException。这是早期版本的错误吗?是否有解决方法或其他方法以编程方式创建现有 Web 内容的新版本?

小问题:提高版本的正确模式是什么?上述 +0.1 方式从 v1.1 v1.200000000000002 创建,但最好使用 v1.2。

注意: updateArticle() 新版本的方法也不起作用,它会抛出 ArticleVersionException。这似乎是正确的行为,因为它应该更新已经存在的内容。

【问题讨论】:

    标签: java liferay portlet


    【解决方案1】:

    好的,我同时找到了一个解决方案,这要感谢 Liferay 论坛的 Andew Jardin 的一些启发。

    解决方法很简单:调用JournalArticleLocalServiceUtil.updateArticle(),但使用旧版本。 Liferay 自动决定何时创建新版本,并负责分配正确的版本。

    【讨论】:

    • 你能说得更具体点吗?我遇到了同样的错误,LR 6.2sp11。就我而言,我正在获取文章,使用.getVersion() 获取版本,并将返回的版本直接传递给updateArticle()。如果我手动增加版本,我会收到一条错误消息,说 LR 找不到文章。如果我通过了原始版本,我会得到ArticleVersionException,没有其他关于问题的描述。
    • 我也是这样做的,将.getVersion()的返回值传递给updateArticle()。您确定要获取文章的最新版本吗? (例如,使用JournalArticleLocalServiceUtil.getLatestArticle()
    【解决方案2】:

    我解决了,

    double version =    article.getVersion();
                version = MathUtil.format(version + 0.1, 1, 1);
                article.setVersion(version);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      • 2013-11-15
      • 2016-05-18
      • 2019-07-20
      • 2017-02-06
      相关资源
      最近更新 更多