Comment déplacer un élément dans un code d'application

Environnement

AEM Assets 6.0, 6.1, 6.2, 6.3.

Étapes

Les éléments ne peuvent pas être déplacés correctement à l'aide de l'API JCR Session.move.  Au lieu de cela, vous devez utiliser l'API PageManager.move.

Par exemple :

PageManager pageManager = ((PageManager)resourceResolver.adaptTo(PageManager.class));
Resource sourceResource = resourceResolver.getResource("/content/dam/example.jpg");
String destinationPath = "/content/dam/test/example.jpg";
pageManager.move(sourceResource, destinationPath, null, false, true, null, null);

Malheureusement, cette méthode d'appel n'inclut pas complètement tout ce qui est fait par com.day.cq.wcm.core.impl.commands. Classe AbstractCopyMoveCommand qui gère la requête de l'interface utilisateur. Pour simuler entièrement l'interface utilisateur, vous devez déclencher cette requête en interne à l'aide de SlingRequestProcessor.

Voir cet article pour plus de détails sur la façon de déclencher une telle demande:
http://www.nateyolles.com/blog/2015/10/get-rendered-html-for-an-aem-resource-or-component.

La demande serait :

POST /bin/wcmcommand

Avec ces paramètres Post :

cmd=movePage
integrity=true
_charset=utf-8
destParentPath=/content/dam
destName=test1.png
srcPath=/content/dam/test.png
Logo Adobe

Accéder à votre compte