2014-08-28 48 views
1

我想在Liferay中編輯webcontent(journalarticle),並根據定製portlet創建新版本。我稱之爲JournalArticleLocalServiceUtil.addArticle()方法具有以下相關參數:在Liferay中添加新的web內容版本

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。這似乎是正確的行爲,因爲它應該更新已經存在的內容。

回答

0

好的,我同時找到了一個解決方案,這要感謝來自Liferay Forums的Andew Jardin的一些靈感。

解決方法非常簡單:請撥打JournalArticleLocalServiceUtil.updateArticle(),但使用舊版本。 Liferay會自動決定何時創建新版本,並負責分配正確的版本。

+0

你能更具體?我得到這個相同的錯誤,LR 6.2sp11。就我而言,我正在讀取文章,使用'.getVersion()'獲取版本,並將返回的版本直接傳遞給'updateArticle()'。如果我手動增加版本,我得到一個錯誤,說LR找不到文章。如果我通過原始版本,我會得到'ArticleVersionException',而沒有其他描述什麼是錯的。 – CodeChimp 2015-12-31 00:21:36

+0

我這樣做,將'.getVersion()'的返回值傳遞給'updateArticle()'。你確定你正在獲取這篇文章的最新版本嗎? (例如通過使用'JournalArticleLocalServiceUtil.getLatestArticle()') – ttamas 2015-12-31 12:06:33

0

我得到了它這樣做解決了,

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