Een nieuwe graniet-UI-veldcomponent maken creating-a-new-granite-ui-field-component
Graniet UI verstrekt een waaier van componenten die worden ontworpen om in vormen worden gebruikt; deze worden genoemd gebieden in de verklarende woordenlijst UI. De standaardcomponenten voor graniet-formulieren zijn beschikbaar onder:
/libs/granite/ui/components/foundation/form/*
Gebruik het granite UI Foundation-framework om granitecomponenten te ontwikkelen en/of uit te breiden. Dit heeft twee elementen:
-
server:
-
een verzameling stichtingscomponenten
- stichting - modulair, composable, laagbaar, herbruikbaar
- componenten - Sling-componenten
-
hulpverleners voor de ontwikkeling van toepassingen
-
-
clientzijde:
- een verzameling clientlibs die een woordenschat (dat wil zeggen een uitbreiding van de HTML-taal) biedt om generieke interactiepatronen te bereiken via een gebruikersinterface die met hypermedia werkt.
De generieke graniet UI-component field
bestaat uit twee belangwekkende bestanden:
init.jsp
: verwerkt de algemene verwerking, de labels, beschrijving en de formulierwaarde die u nodig hebt bij het weergeven van het veld.render.jsp
: dit is de plaats waar de werkelijke rendering van het veld wordt uitgevoerd en moet worden overschreven voor uw aangepaste veld; wordt opgenomen doorinit.jsp
.
Zie {de documentatie van 0} granite UI - Gebied 🔗 voor details.
Zie voor voorbeelden:
-
cqgems/customizingfield/components/colorpicker
- verstrekt door de Steekproef van de Code
-
granite/ui/components/foundation/form
/libs/granite/ui/components/foundation/form
directoryHet serverscript voor de component maken creating-the-server-side-script-for-the-component
Het aangepaste veld mag alleen het script render.jsp
overschrijven, waar u de markering voor de component opgeeft. U kunt JSP (namelijk het teruggevende manuscript) als omslag voor uw prijsverhoging beschouwen.
-
Maak een component die de eigenschap
sling:resourceSuperType
gebruikt om over te nemen van:/libs/granite/ui/components/foundation/form/field
-
Overschrijf het script:
render.jsp
In dit script genereert u de hypermediamarkering (verrijkte markering met de hypermedia-betaalbaarheid), zodat de client weet hoe de interactie met het gegenereerde element tot stand moet worden gebracht. Dit zou de server-zijstijl van Granite UI van codering moeten volgen.
Wanneer het aanpassen, moet het enige contract dat u ** moet vervullen de vormwaarde (die in
init.jsp
wordt geïnitialiseerd) van het verzoek lezen gebruikend: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");
Zie voor meer informatie de implementatie van de velden voor graniet-UI buiten de box, bijvoorbeeld
/libs/granite/ui/components/foundation/form/textfield
.note note NOTE Op dit moment is JSP de voorkeursscriptmethode, aangezien het niet gemakkelijk is om informatie door te geven van de ene component naar de andere (die vaak voorkomt in de context van formulier/velden) in HTML.
De clientbibliotheek voor de component maken creating-the-client-library-for-the-component
Specifiek gedrag aan de clientzijde toevoegen aan de component:
-
Maak een clientlib van de categorie
cq.authoring.dialog
. -
Maak een clientlib van de categorie
cq.authoring.dialog
en definieer de categorieJS
/CSS
in de client.Definieer uw
JS
/CSS
in de clientlib.note note NOTE Op dit moment biedt de graniet-interface geen out-of-the-box listeners of haken die u rechtstreeks kunt gebruiken om JS-gedrag toe te voegen. Zo, om extra gedrag JS aan uw component toe te voegen, moet u een haak JS aan een douaneklasse uitvoeren die u dan aan uw component tijdens de prijsverhogingsgeneratie toewijst.