1

屋外でFileFolderServiceを使用してファイルを作成しようとしていますが、例外が発生します。詳細を以下に示します。だから誰でも私を助けることができます!

サイト名:mysiteファイル名:リクエストパラメータとして渡され、渡された値を持つ新しいファイルがサイトのドキュメントライブラリに作成されます。

コードスニペット:

ServiceRegistry serviceRegistry = (ServiceRegistry) ctx.getBean("ServiceRegistry");
FileFolderService fileFolderService = serviceRegistry.getFileFolderService();
String fileName = req.getParameter("fileName");
NodeRef folder = new NodeRef("avm://mysite/-1;www;avm_webapps;ROOT;documentLibrary");
fileFolderService.create(folder, fileName, ContentModel.TYPE_CONTAINER);

スローされた例外:

ERROR [extensions.webscripts.AbstractRuntime] [http-bio-8080-exec-4] Exception from executeScript - redirecting to status template error: 11100002 Wrapped Exception (with status template): 11100016 Invalid node type for AVM.
 org.springframework.extensions.webscripts.WebScriptException: 11100002 Wrapped Exception (with status template): 11100016 Invalid node type for AVM.
    at org.springframework.extensions.webscripts.AbstractWebScript.createStatusException(AbstractWebScript.java:1067)
    at org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:171)
    at org.alfresco.repo.web.scripts.RepositoryContainer$3.execute(RepositoryContainer.java:433)
    at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:433)
    at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:495)
    at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:533)
    at org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:349)
    at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:377)
    at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:209)
    at org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:118)
4

1 に答える 1

3

AVMのようなパスを使用してDMリポジトリ内のアイテムにアクセスしようとしています。2つの違いがわからない場合は、ProfessionalAlfrescoの本などのバックグラウンドリーディングを行うことをお勧めします。

次のコードのようなものを試すことができますが、私はこれを自分でテストしていません。

String siteName = "blah", newFile = "My New File";
String path = "app:company_home/st:sites/cm:" + siteName + "/cm:documentLibrary";
List<String> pathElements = Arrays.asList(str.split("/"));
NodeRef rootNode = nodeService.getRootNode(new StoreRef("workspace", "SpacesStore"));
NodeRef dlNode = fileFolderService.resolveNamePath(rootNode, pathElements);
NodeRef newNode = fileFolderService.create(dlNode, newFile, ContentModel.TYPE_CONTENT).getNodeRef();

ノードにいくつかのプロパティとコンテンツを設定する必要がありますが、それでも少なくともノードが作成されます。Alfresco FirstFoundationClient SDKプロジェクトには、さらに多くの例があります。

nodeServiceオブジェクトをどのように注入するかは正確にfileFolderService異なり、コードが実行されているコンテナによって異なりますが、JavaベースのWebスクリプトの場合は、NodeServiceFileFolderServiceBeanを参照することでSpringconfigを介して依存関係を注入できます。可能であれば、ifの使用は避けてくださいserviceRegistry

于 2012-12-11T14:35:16.963 に答える