Добавить новую версию веб-контента в Liferay

1

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

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

Так что старый articleId, и версия увеличилась.

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

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

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

Теги:
liferay
portlet

2 ответа

0
Лучший ответ

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

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

  • 0
    Можете быть более конкретными? Я получаю ту же ошибку, LR 6.2sp11. В моем случае я выбираю статью, получаю версию с помощью .getVersion() и .getVersion() эту возвращенную версию непосредственно в updateArticle() . Если я вручную увеличиваю версию, я получаю сообщение о том, что LR не может найти статью. Если я ArticleVersionException оригинальную версию, я получаю ArticleVersionException без ArticleVersionException либо другого описания того, что не так.
  • 0
    Я делаю то же самое, передавая возвращаемое значение .getVersion() в updateArticle() . Вы уверены, что загружаете последнюю версию статьи? (Например, используя JournalArticleLocalServiceUtil.getLatestArticle() )
0

Я решил его решить,

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню