РЕДАКТИРОВАТЬ: просто проверено , используйте ASSOC_CONTAINS вместо ASSOC_CHILDREN
Существуют различные способы создания нового контента из вашего кода Java, например, с помощью:
Полагаю, вы ссылаетесь здесь на последний метод. Давайте посмотрим на сигнатуру метода (есть другая версия createNode
, которая также принимает Map
для начальных свойств, я бы просто пропустил ее сейчас):
ChildAssociationRef createNode(NodeRef parentRef,
QName assocTypeQName,
QName assocQName,
QName nodeTypeQName)
throws InvalidNodeRefException,
InvalidTypeException
Допустим, мы хотим создать новый узел в папке, ваш код будет выглядеть следующим образом:
NodeRef folderNode = getMyFolderNode();
ChildAssociationRef childAssoc = nodeService.createNode(folderNode,
ContentModel.ASSOC_CONTAINS,
QName.createQName("{foo}bar"),
ContentModel.TYPE_CONTENT);
Результатом этого вызова будет новый узел, созданный в folderNode
.
Новый узел будет связан со своей родительской папкой ассоциацией типа ContentModel.ASSOC_CONTAINS
: это наиболее важная часть, поскольку узлы могут быть связаны с использованием ряда различных ассоциаций, но родительский -детей, который браузер узла использует для отображения содержимого как поданного внутри другого, является только этим.
{foo}bar
- это QName
, который идентифицирует эту конкретную родительско-дочернюю ассоциацию. В браузере узлов вы можете увидеть эффект этого параметра в пути к узлу, например /app:company_home/...../foo:bar
.
Последний параметр ContentModel.TYPE_CONTENT
- это, конечно, тип, с которым вы хотите создать новый узел. Возможно, вы захотите использовать QName
, который ссылается на ваш собственный тип.