DocumentationAEMTutoriels AEMTutoriels d’AEM as a Cloud Service

Présentation

Dernière mise à jour : 18 juin 2025
  • S'applique à :
  • Experience Manager as a Cloud Service
  • Rubriques :
  • Outils pour développeurs

Créé pour :

  • Débutant
  • Intermédiaire
  • Développeur

La liaison de servlets par chemins d’accès présente plusieurs inconvénients par rapport à la liaison par types de ressources, à savoir :

  • Les servlets liés au chemin d’accès ne peuvent pas faire l’objet d’un contrôle d’accès à l’aide des listes ACL par défaut du référentiel JCR.
  • Les servlets liés au chemin d’accès ne peuvent être enregistrés que dans un chemin et non dans un type de ressource (c’est-à-dire qu’il n’y a pas de gestion des suffixes).
  • Si un servlet lié au chemin d’accès n’est pas actif, par exemple si le bundle est manquant ou n’est pas démarré, une requête POST peut entraîner des résultats inattendus. En général, cela crée un nœud à l’adresse /bin/xyz qui chevauche ensuite la liaison du chemin des servlets.
    Le mappage n’est pas transparent pour un développeur ou une développeuse qui ne regarde que le référentiel.
    Compte tenu de ces inconvénients, il est fortement recommandé de lier les servlets aux types de ressources plutôt qu’aux chemins d’accès.

Créer un servlet

Lancez votre projet aem-banking dans IntelliJ. Créez un servlet appelé GetFieldChoices sous le dossier servlets, comme illustré dans la copie d’écran ci-dessous.
choices

Exemple de servlet

Le servlet suivant est lié au type de ressource Sling : azure/fetchchoice.

import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.apache.sling.servlets.annotations.SlingServletResourceTypes;
import org.osgi.framework.Constants;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.jcr.Session;
import javax.servlet.Servlet;
import java.io.IOException;
import java.io.Serializable;

@Component(
        service={Servlet.class }
)

        @SlingServletResourceTypes(
                resourceTypes="azure/fetchchoices",
                methods= "GET",
                extensions="json"
                )


public class GetFieldChoices extends SlingAllMethodsServlet implements Serializable {
    private static final long serialVersionUID = 1L;
    private final  transient Logger log = LoggerFactory.getLogger(this.getClass());




    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) {

        log.debug("The form path I got was "+request.getParameter("formPath"));

    }
}

Créer des ressources dans CRX

  • Connectez-vous à votre SDK AEM local.
  • Créez une ressource nommée fetchchoices (vous pouvez nommer ce nœud quand vous le souhaitez) de type cq:Page sous le nœud de contenu.
  • Enregistrez vos modifications.
  • Créez un nœud appelé jcr:content de type cq:PageContent et enregistrez les modifications.
  • Ajoutez les propriétés suivantes au nœud jcr:content :
Nom de la propriété
Valeur de la propriété
jcr:title
Servlets utilitaires
sling:resourceType
azure/fetchchoices

La valeur sling:resourceType doit correspondre à resourceTypes="azure/fetchchoice spécifié dans le servlet.

Vous pouvez désormais appeler votre servlet en demandant la ressource avec sling:resourceType = azure/fetchchoices à son chemin d’accès complet, avec tous les sélecteurs ou extensions enregistrés dans le servlet Sling.

http://localhost:4502/content/fetchchoices/jcr:content.json?formPath=/content/forms/af/forrahul/jcr:content/guideContainer

Le chemin /content/fetchchoices/jcr:content est le chemin d’accès de la ressource et l’extension .json correspond à ce qui est spécifié dans le servlet.

Synchroniser votre projet AEM

  1. Ouvrez le projet AEM dans votre éditeur favori. J’ai choisi intelliJ.
  2. Créez un fichier appelé fetchchoices sous \aem-banking-application\ui.content\src\main\content\jcr_root\content.
  3. Cliquez avec le bouton droit sur le dossier fetchchoices et sélectionnez repo | Get Command (cet élément de menu est configuré dans un chapitre précédent de ce tutoriel).

Cela devrait synchroniser ce nœud d’AEM à votre projet AEM local.

La structure de votre projet AEM doit ressembler à celle-ci :
resource-resolver
Mettez à jour le fichier filter.xml dans le dossier aem-banking-application\ui.content\src\main\content\META-INF\vault avec l’entrée suivante :

<filter root="/content/fetchchoices" mode="merge"/>

Vous pouvez désormais transmettre vos modifications à un environnement AEM as a Cloud Service à l’aide de Cloud Manager.

Étapes suivantes

Activer les composants du portail Formulaires

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69