Skapa en ny GRE-fältkomponent creating-a-new-granite-ui-field-component
Gränssnittet Granite innehåller ett antal komponenter som är avsedda att användas i formulär. kallas fält i GRUND-språket Granite. Standardkomponenterna i Granite finns under:
/libs/granite/ui/components/foundation/form/*
Använd ramverket Granite UI Foundation för att utveckla och/eller utöka Granite-komponenter. Detta har två element:
-
serversidan:
-
en samling grundkomponenter
- grund - modulär, sammansättningsbar, lagerhanterbar, återanvändbar
- komponenter - Sling-komponenter
-
hjälpmedel för utveckling av ansökningar
-
-
klientsidan:
- en samling klientlibs som innehåller vissa vokabulära tecken (dvs. en utökning av HTML) för att uppnå generiska interaktionsmönster via ett hypermediedrivet användargränssnitt
Den generiska användargränssnittskomponenten Granite field
består av två intressanta filer:
init.jsp
: hanterar den allmänna behandlingen, etiketter, beskrivning och tillhandahåller formulärvärden som du behöver när du återger fältet.render.jsp
: Det är här som den faktiska återgivningen av fältet utförs och måste åsidosättas för ditt anpassade fält. ingår iinit.jsp
.
Se Bevilja gränssnittsdokumentation - fält om du vill ha mer information.
Se till exempel:
-
cqgems/customizingfield/components/colorpicker
- från Kodexempel
-
granite/ui/components/foundation/form
/libs/granite/ui/components/foundation/form
katalogSkapa serverskriptet för komponenten creating-the-server-side-script-for-the-component
Ditt anpassade fält bör bara åsidosätta render.jsp
skript, där du anger koden för komponenten. Du kan betrakta JSP (dvs. återgivningsskriptet) som en wrapper för koden.
-
Skapa en ny komponent som använder
sling:resourceSuperType
egenskap att ärva från:/libs/granite/ui/components/foundation/form/field
-
Åsidosätt skriptet:
render.jsp
I det här skriptet måste du generera hypermediemarkeringen (d.v.s. berikad kod som innehåller hypermedielagring) så att klienten vet hur man interagerar med det genererade elementet. Detta bör följa kodningsformatet för serversidan Granite.
När du anpassar, det enda kontrakt som du måste fulfill är att läsa formulärvärdet (initierat i
init.jsp
) från begäran med:code language-none // Delivers the value of the field (read from the content) ValueMap vm = (ValueMap) request.getAttribute(Field.class.getName()); vm.get("value, String.class");
Mer information finns i implementeringen av användargränssnittsfält för Granite som är färdiga att användas. till exempel
/libs/granite/ui/components/foundation/form/textfield
.note note NOTE För närvarande är JSP den rekommenderade skriptmetoden eftersom det inte är lätt att skicka information från en komponent till en annan (vilket är ganska vanligt i formulärfält) i HTML.
Skapa klientbiblioteket för komponenten creating-the-client-library-for-the-component
Så här lägger du till specifikt klientbeteende i komponenten:
-
Skapa ett clientlib för kategori
cq.authoring.dialog
. -
Skapa ett clientlib för kategori
cq.authoring.dialog
och definieraJS
/CSS
inuti.Definiera
JS
/CSS
inuti klientlib.note note NOTE För tillfället innehåller GRE-gränssnittet inga avlyssnare eller kopplingar som du kan använda direkt för att lägga till JS-beteende. För att lägga till ytterligare JS-beteende i komponenten måste du implementera en JS-krok i en anpassad klass som du sedan tilldelar till komponenten under kodgenereringen.