如何在Java中为Liferay Web内容设置类别?

如何在Java中为Liferay Web内容设置类别?,liferay,liferay-7,Liferay,Liferay 7,在Liferay 7中,我有一个Web内容、一个词汇表和一个类别。 如何将类别设置为Web内容 我写了这段代码: article = JournalArticleLocalServiceUtil.addArticle(...); category = AssetCategoryLocalServiceUtil.addCategory(...); AssetCategoryLocalServiceUtil.setAssetEntryAssetCategories( article.get

在Liferay 7中,我有一个Web内容、一个词汇表和一个类别。
如何将类别设置为Web内容

我写了这段代码:

article = JournalArticleLocalServiceUtil.addArticle(...);
category = AssetCategoryLocalServiceUtil.addCategory(...);

AssetCategoryLocalServiceUtil.setAssetEntryAssetCategories(
    article.getPrimaryKey(), new long[]{category.getPrimaryKey()});
执行时无错误,但类别不会显示在所创建Web内容的编辑页面上:

类别已成功创建,但Web内容未分配该类别

我做错了什么


我也尝试过
addAssetEntryAssetCategory
addAssetEntryAssetCategory
addAssetCategory
:同样的问题。

尝试使用这两个函数中的任何一个来添加类别:

addAssetEntryAssetCategory(long entryId, long categoryId);
addAssetEntryAssetCategories(long entryId, long[] categoryIds);
在代码中,您使用的是主键,但是,根据文档,您应该使用条目id和类别id。因此,您的函数调用应该如下所示:

AssetEntry entry = AssetEntryLocalServiceUtil.fetchEntry(JournalArticle.class.getName(),  article.getResourcePrimKey());

AssetCategoryLocalServiceUtil.addAssetEntryAssetCategory(
    entry.getEntryId(), category.getCategoryId());
从7.0开始,他们从JournalArticle中删除了getEntryId方法。您需要额外的调用来获取它。有一个<代码>更新>代码>方法,您也可以考虑在单次调用中这样做。我仍在使用6.2,并在追赶7:)


请注意,类别是为管理员而不是普通用户设计的。

您在资产条目表中看到条目了吗?@YuVi:是的,Web内容存在于
AssetEntry
表中,类别存在于
AssetCategory
表中。对不起!我指的是映射表“AssetEntries\u AssetCategories”,我只是将调用更改为
addAssetEntryAssetCategories
,然后再次执行。同样的问题:Web内容仍然没有类别。同样的问题是
addAssetentyAssetCategory
JournalArticle.getEntryId
在Liferay 7中不存在,你是说
article.getId()
可能吗?但它也不起作用。请记住,您正在填充AssetEntry和AssetCategory之间的映射表。所以,您实际上需要条目id。我更新了代码来为您获取该id。太好了,这很有效!非常感谢映射表提示。