我想在Liferay中编辑webcontent(journalarticle),并从自定义portlet创建一个新版本。我使用以下相关参数调用JournalArticleLocalServiceUtil.addArticle()
方法:
articleId = article.getArticleId();
autoArticleId = false;
version = article.getVersion()+0.1;
所以旧文章ID,版本增加了。
此代码适用于LR 6.1.30EE,但在6.1.20EE和6.1.1CE中我得到了DuplicateArticleIdException
。这是早期版本中的错误吗?是否有解决方法或其他方法以编程方式创建现有webcontent的新版本?
小问题:增加版本的正确方法是什么?上述+0.1方式是从v1.1 v1.200000000000002创建的,但最好是v1.2。
注意:
使用新版本的updateArticle()
方法也不起作用,它会抛出ArticleVersionException
。这似乎是正确的行为,因为它应该更新现有的内容。
答案 0 :(得分:0)
好的,我同时找到了一个解决方案,感谢Liferay论坛的Andew Jardin的一些灵感。
解决方案非常简单:调用JournalArticleLocalServiceUtil.updateArticle()
,但使用旧版本。 Liferay会自动决定何时创建新版本,并负责分配正确的版本。
答案 1 :(得分:0)
我通过这样做解决了这个问题,
double version = article.getVersion();
version = MathUtil.format(version + 0.1, 1, 1);
article.setVersion(version);