2014-08-28 4 views
1

Я хотел бы отредактировать webcontent (journalarticle) в Liferay и создать новую версию из этого пользовательского портлета. Я называю JournalArticleLocalServiceUtil.addArticle() метод со следующими соответствующими параметрами:Добавить новую версию webcontent в Liferay

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

So старого ArticleID и версию возрастала.

Этот код работает в LR 6.1.30EE, но в 6.1.20EE и 6.1.1CE я получил DuplicateArticleIdException. Это ошибка в более ранней версии? Есть ли способ обхода или другой метод для создания новой версии существующего webcontent программно?

Незначительный вопрос: какой правильный способ увеличения версии? Вышеуказанный способ +0.1 создается из v1.1 v1.200000000000002, но предпочтительнее будет v1.2.

Примечание: updateArticle() метод с новой версией тоже не работает, он выбрасывает ArticleVersionException. Похоже, что это правильно, поскольку он должен обновлять уже существующий контент.

ответ

0

ОК, я нашел решение тем временем, благодаря некоторому вдохновению от Andew Jardin от Liferay Forums.

Решение довольно просто: позвоните по телефону JournalArticleLocalServiceUtil.updateArticle(), но со старой версией. Liferay автоматически решает, когда создавать новую версию, и заботится о назначении правильной версии.

+0

Можете ли вы быть более конкретным? Я получаю такую ​​же ошибку, LR 6.2sp11. В моем случае я извлекаю статью, получая версию с '.getVersion()' и передавая эту возвращенную версию непосредственно в 'updateArticle()'. Если я вручную увеличиваю версию, я получаю сообщение о том, что LR не смог найти статью. Если я передаю исходную версию, я получаю «ArticleVersionException» без другого описания того, что не так. – CodeChimp

+0

Я делаю то же самое, передавая возвращаемое значение '.getVersion()' to 'updateArticle()'. Вы уверены, что получаете последнюю версию статьи? (Например, с помощью 'JournalArticleLocalServiceUtil.getLatestArticle()') – ttamas

0

я получил это решается делать,

double version = article.getVersion(); 
      version = MathUtil.format(version + 0.1, 1, 1); 
      article.setVersion(version); 
Смежные вопросы