Criação do script do lado do servidor para o componente

Seu campo personalizado deve substituir apenas o render.jsp , onde você fornece a marcação para o seu componente. Você pode considerar o JSP (ou seja, o script de renderização) como um wrapper para sua marcação.

  1. Crie um novo componente que use o sling:resourceSuperType propriedade a ser herdada de:

    /libs/granite/ui/components/foundation/form/field

  2. Substitua o script:

    render.jsp

    Nesse script, você precisa gerar a marcação de hipermídia (ou seja, marcação enriquecida, contendo a disposição da hipermídia) para que o cliente saiba como interagir com o elemento gerado. Isso deve seguir o estilo de codificação da interface do usuário do Granite.

    Ao personalizar, o único contrato que você must fulfill é ler o valor do formulário (inicializado em init.jsp) da solicitação usando:

    // Delivers the value of the field (read from the content)
    ValueMap vm = (ValueMap) request.getAttribute(Field.class.getName());
    vm.get("value, String.class");
    

    Para obter mais detalhes, consulte a implementação dos campos prontos para uso da interface do Granite; por exemplo, /libs/granite/ui/components/foundation/form/textfield.

    NOTE
    No momento, o JSP é o método de script preferido, pois a transmissão de informações de um componente para outro (que é bastante frequente no contexto de formulário/campos) não é facilmente alcançada no HTL.

Criar a biblioteca do cliente para o componente

Para adicionar um comportamento específico do lado do cliente ao seu componente:

  1. Criar uma clientlib da categoria cq.authoring.dialog.

  2. Criar uma clientlib da categoria cq.authoring.dialog e defina JS/ CSS dentro dela.

    Defina as JS/ CSS dentro da clientlib.

    NOTE
    No momento, a interface do usuário do Granite não fornece ouvintes ou ganchos prontos para uso que você pode usar diretamente para adicionar o comportamento do JS. Portanto, para adicionar um comportamento JS adicional ao seu componente, é necessário implementar um gancho JS em uma classe personalizada que você atribui ao seu componente durante a geração da marcação.

Experience Manager