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.
-
Crie um novo componente que use o
sling:resourceSuperType
propriedade a ser herdada de:/libs/granite/ui/components/foundation/form/field
-
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:
-
Criar uma clientlib da categoria
cq.authoring.dialog
. -
Criar uma clientlib da categoria
cq.authoring.dialog
e definaJS
/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.