如何在Java中为Liferay Web内容设置类别?
在Liferay 7中,我有一个Web内容、一个词汇表和一个类别。如何在Java中为Liferay Web内容设置类别?,liferay,liferay-7,Liferay,Liferay 7,在Liferay 7中,我有一个Web内容、一个词汇表和一个类别。 如何将类别设置为Web内容 我写了这段代码: article = JournalArticleLocalServiceUtil.addArticle(...); category = AssetCategoryLocalServiceUtil.addCategory(...); AssetCategoryLocalServiceUtil.setAssetEntryAssetCategories( article.get
如何将类别设置为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。太好了,这很有效!非常感谢映射表提示。