如何以编程方式在 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 门户中。
在我的程序中,我们已经创建了词汇表,并在每个词汇表下创建了类别,但我正在尝试修改代码,以便我们可以在每个类别下创建子类别,并且子类别将是唯一的。
我可以使用 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 门户中。