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

Java 如何以编程方式在Liferay DXP中的每个类别下创建子类别?,java,liferay-7,Java,Liferay 7,在我的程序中,我们已经创建了词汇表,在每个词汇表下,我们创建了类别,但我试图修改代码,以便我们可以在每个类别下创建子类别,并且子类别将是唯一的 我可以使用Liferay在每个类别下添加子类别,但不确定如何以编程方式添加它们?是否有任何方法或类可用于以编程方式添加它们?如有任何帮助或提示,将不胜感激 我正在使用Liferay DXP和Java 1.8我不太确定当您请求两种不同的东西时,您到底需要做什么 要以编程方式添加类别,您需要获得对addCategory方法的引用并调用其中一个方法。下面是一个

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

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


我正在使用Liferay DXP和Java 1.8

我不太确定当您请求两种不同的东西时,您到底需要做什么

要以编程方式添加类别,您需要获得对addCategory方法的引用并调用其中一个方法。下面是一个例子:

AssetCategory AssetCategory=AssetCategory LocalService.addCategory TestPropsValues.getUserId、\u group.getGroupId、title、, _assetVocabulary.getVocabularyId,serviceContext;
为了确保名称是唯一的,您可以使用。有一个示例演示了如何对布局执行此操作,但您可以按照相同的方法为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);
您可以根据需要使用其setter(如setGroupId、setCompanyId等)设置类别的详细信息

一旦它被创建,创建另一个类别,像上面类似的子类别

AssetCategory childCategory= AssetCategoryLocalServiceUtil.createAssetCategory(categoryId);
并添加所需的setter,然后最终获得父类别id,如下所示:

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

childCategory.setParentCategorycatId


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

嗨,米伦,谢谢你的回答。基本上,我需要对一些web内容进行分类和管理,为此,我有一个类别列表,其中每个类别都有不同的内容。但是现在我需要基于父类别和子类别获取内容。我不明白。您是说您不想以编程方式添加新类别,而是将现有类别应用于现有内容?好的,很抱歉造成任何不必要的混淆。这里的基本要求是创建一个词汇表,在这个词汇表下,我需要创建一个类别,在每个类别下,我需要创建子类别,这应该通过编程来完成。上面的答案只能创建一个类别,但我需要知道我是否可以以类似的方式创建子类别是的。使用相同的API。请注意,有些addCategory方法具有长parentCategoryId参数。您必须先创建ii或找到它,然后获取id,然后使用其父级创建子级。