如何以编程方式在 Liferay DXP 中的每个类别下创建子类别?

How to create subcategory under each category in Liferay DXP programmatically?

在我的程序中,我们已经创建了词汇表,并在每个词汇表下创建了类别,但我正在尝试修改代码,以便我们可以在每个类别下创建子类别,并且子类别将是唯一的。

我可以使用 Liferay 在每个类别下添加一个子类别,但不确定如何以编程方式添加它们?有什么方法或 类 我可以用来以编程方式添加它们吗?任何帮助或提示将不胜感激

我正在使用 Liferay DXP 和 Java 1.8

我不太确定您在接缝要求 2 个不同的东西时到底需要做什么。

要以编程方式添加类别,您需要获取对 AssetCategoryLocalService and call one of the addCategory methods. Here is an example from a test class 的引用:

AssetCategory assetCategory = assetCategoryLocalService.addCategory(
            TestPropsValues.getUserId(), _group.getGroupId(), title,
            _assetVocabulary.getVocabularyId(), serviceContext);

为了确保名称是唯一的,您可以使用 model listener. There is code sample,它展示了如何为 Layout 执行此操作,但您可以按照相同的方法为 AssetCategory 创建名称。

所以我已经找到了它的实现,我还想提供更多细节并添加一个代码示例,这可能对未来的读者有所帮助。

基本上,要添加一个类别,我们需要先创建一个类别,如果它已经不存在并且应该与词汇相关联。

AssetVocabulary assetVocabulary=AssetVocabularyLocalServiceUtil.createAssetVocabulary(vocabularyId);
        assetVocabulary.setGroupId(groupId);
        assetVocabulary.setName(vocabularyName);
        assetVocabulary.setTitle(vocabulary, Locale.US);
        assetVocabulary.setCompanyId(companyId);
        AssetVocabularyLocalServiceUtil.updateAssetVocabulary(assetVocabulary);

创建词汇表后,您可以向其中添加一个类别,如下所示。在本例中,它是父类别。

AssetCategory parentCategory= AssetCategoryLocalServiceUtil.createAssetCategory(categoryId);

并且您可以根据需要使用其设置器将详细信息设置为类别,如 setGroupId、setCompanyId 等,

创建后创建另一个类别,如与上述类似的子类别。

AssetCategory childCategory= AssetCategoryLocalServiceUtil.createAssetCategory(categoryId);

并添加所需的设置器,然后最终获得父类别 ID,如下所示:

long catId= parentCategory.getCategoryId(); 并将其设置为子类别。 如下图

childCategory.setParentCategory(catId);

并且当您 运行 类别时,您将看到词汇表-> 类别-> 子类别。在 Liferay 门户中。