Introdução

A vinculação de servlets por caminhos tem várias desvantagens em comparação à vinculação por tipos de recursos, a saber:

  • Os servlets vinculados a caminhos não podem ser controlados pelo acesso usando as ACLs de repositório JCR padrão
  • Os servlets vinculados a caminhos só podem ser registrados em um caminho e não em um tipo de recurso (ou seja, sem tratamento de sufixos)
  • Se um servlet vinculado a caminho não estiver ativo, por exemplo, se o pacote estiver ausente ou não for iniciado, um POST pode resultar em resultados inesperados. normalmente cria um nó em /bin/xyz que subsequentemente sobrepõe a associação de caminho de servlets
    o mapeamento não é transparente para um desenvolvedor que olha apenas para o repositório
    Dadas essas desvantagens, é altamente recomendável vincular servlets a tipos de recursos em vez de caminhos

Criar Servlet

Inicie seu projeto aem-banking no IntelliJ. Crie um servlet chamado GetFieldChoices na pasta de servlets, conforme mostrado na captura de tela abaixo.
escolhas

Servlet de amostra

O seguinte servlet está associado ao tipo de recurso Sling: azure/fetchchoices

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"));

    }
}

Criar recursos no CRX

  • Faça logon no seu SDK AEM local.
  • Crie um recurso chamado fetchchoices (você pode nomear este nó como quiser) do tipo cq:Page no nó de conteúdo.
  • Salve as alterações
  • Crie um nó chamado jcr:content do tipo cq:PageContent e salve as alterações
  • Adicionar as seguintes propriedades ao nó jcr:content
Nome de propriedade
Valor de propriedade
jcr:title
Servlets de utilitário
sling:resourceType
azure/fetchchoices

O valor sling:resourceType deve corresponder a resourceTypes="azure/fetchchoices especificados no servlet.

Agora você pode chamar seu servlet solicitando o recurso com sling:resourceType = azure/fetchchoices em seu caminho completo, com quaisquer seletores ou extensões registradas no servlet Sling.

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

O caminho /content/fetchchoices/jcr:content é o caminho do recurso e a extensão .json é a especificada no servlet

Sincronizar o projeto AEM

  1. Abra o projeto AEM no seu editor favorito. Usei o IntelliJ para isso.
  2. Criar uma pasta chamada fetchchoices em \aem-banking-application\ui.content\src\main\content\jcr_root\content
  3. Clique com o botão direito do mouse na pasta fetchchoices e selecione repo | Get Command (Este item de menu está configurado em um capítulo anterior deste tutorial).

Isso deve sincronizar esse nó do AEM com o projeto AEM local.

A estrutura do projeto AEM deve ficar assim
resolvedor de recursos
Atualize o filter.xml na pasta aem-banking-application\ui.content\src\main\content\META-INF\vault com a seguinte entrada

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

Agora você pode enviar as alterações para um ambiente do AEM as a Cloud Service usando o Cloud Manager.

Próximas etapas

Habilitar Componentes do Portal Forms

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