Sviluppo di Forms (interfaccia classica) developing-forms-classic-ui
La struttura di base di un modulo è la seguente:
- Inizio modulo
- Elementi modulo
- Fine modulo
Tutti questi elementi vengono realizzati con una serie di componenti modulo predefiniti, disponibili in un'installazione AEM standard.
Oltre a sviluppare nuovi componenti da utilizzare nei moduli, è possibile:
Utilizzo di script per estendere le funzionalità laddove necessario.
Precaricamento dei valori modulo preloading-form-values
Il componente di inizio modulo fornisce un campo per il percorso di caricamento, un percorso facoltativo che punta a un nodo nell'archivio.
Il percorso di caricamento è il percorso delle proprietà del nodo utilizzato per caricare valori predefiniti in più campi del modulo.
Questo è un campo facoltativo che specifica il percorso di un nodo nell’archivio. Se le proprietà di questo nodo corrispondono ai nomi dei campi, i campi appropriati del modulo vengono precaricati con il valore di tali proprietà. Se non esiste alcuna corrispondenza, il campo contiene il valore predefinito.
FormsHelper#setFormLoadResource
in init.jsp
.Precaricamento dei campi modulo con più valori preloading-form-fields-with-multiple-values
Vari campi modulo hanno anche il percorso di caricamento Elementi, di nuovo un percorso facoltativo che punta a un nodo nell'archivio.
Il percorso di caricamento Elementi è il percorso delle proprietà del nodo utilizzato per caricare valori predefiniti in quel campo specifico del modulo, ad esempio un elenco a discesa, gruppo di caselle di controllo o gruppo di caselle di controllo.
Esempio: precaricamento di un elenco a discesa con più valori example-preloading-a-dropdown-list-with-multiple-values
È possibile configurare un elenco a discesa con l’intervallo di valori desiderato.
Il percorso di caricamento Elementi può essere utilizzato per accedere a un elenco da una cartella nel repository e precaricarli nel campo:
-
Crea una cartella Sling (
sling:Folder
)
ad esempio,/etc/designs/<myDesign>/formlistvalues
-
Aggiungere una nuova proprietà (ad esempio,
myList
) di tipo stringa con più valori (String[]
) per contenere l'elenco di elementi a discesa. Il contenuto può essere importato anche utilizzando uno script, ad esempio con uno script JSP o cURL in uno script shell. -
Utilizza il percorso completo nel campo Percorso di caricamento elementi:
ad esempio,/etc/designs/geometrixx/formlistvalues/myList
Nota che se i valori in String[]
sono del formato seguente:
AL=Alabama
AK=Alaska
e così via, l'AEM genera l'elenco come:
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
Questa funzione può, ad esempio, essere utilizzata in un ambiente multilingue.
Sviluppo di azioni personalizzate per i moduli developing-your-own-form-actions
Un modulo richiede un'azione. Un'azione definisce l'operazione eseguita quando il modulo viene inviato con i dati utente.
Una serie di azioni è fornita con un impianto AEM standard, come si può vedere in:
/libs/foundation/components/form/actions
e nell'elenco Tipo azione del componente Modulo:
In questa sezione viene illustrato come sviluppare un'azione modulo personalizzata da includere nell'elenco.
Puoi aggiungere la tua azione in /apps
come segue:
-
Creare un nodo di tipo
sling:Folder
. Specifica un nome che rifletta l’azione da implementare.Ad esempio:
/apps/myProject/components/customFormAction
-
In questo nodo definisci le seguenti proprietà, quindi fai clic su Salva tutto per mantenere le modifiche:
-
sling:resourceType
- impostato comefoundation/components/form/action
-
componentGroup
- definisci come.hidden
-
Facoltativamente:
-
jcr:title
- specifica un titolo desiderato da visualizzare nell'elenco a discesa. Se non è impostato, viene visualizzato il nome del nodo -
jcr:description
- immetti una descrizione a tua scelta
-
-
-
Nella cartella crea un nodo di dialogo:
- Aggiungi i campi in modo che l’autore possa modificare la finestra di dialogo dei moduli una volta scelta l’azione.
-
Nella cartella crea:
-
Uno script post.
Il nome dello script èpost.POST.<extension>
, ad esempiopost.POST.jsp
Lo script post viene richiamato quando un modulo viene inviato per elaborare il modulo, contiene il codice che gestisce i dati provenienti dal moduloPOST
. -
Aggiungi uno script di inoltro che viene richiamato al momento dell’invio del modulo.
Il nome dello script èforward.<extension
>, ad esempioforward.jsp
Questo script può definire un percorso. La richiesta corrente viene quindi inoltrata al percorso specificato.
La chiamata necessaria è
FormsHelper#setForwardPath
(2 varianti). Un caso tipico è quello di eseguire una convalida, o logica, per trovare il percorso di destinazione e quindi inoltrarlo a tale percorso, consentendo al servlet Sling POST predefinito di eseguire l’archiviazione effettiva in JCR.Potrebbe esserci anche un altro servlet che esegue l'elaborazione effettiva, in tal caso l'azione del modulo e
forward.jsp
fungerebbero solo da codice "glue". Un esempio è l'azione di posta in/libs/foundation/components/form/actions/mail
, che inoltra i dettagli a<currentpath>.mail.html
dove si trova un servlet di posta.Quindi:
- un
post.POST.jsp
è utile per piccole operazioni che sono completamente eseguite dall'azione stessa - mentre
forward.jsp
è utile quando è richiesta solo la delega.
L’ordine di esecuzione per gli script è:
-
Al rendering del modulo (
GET
):init.jsp
- per tutti i vincoli del campo:
clientvalidation.jsp
- validationRT del modulo:
clientvalidation.jsp
- il modulo viene caricato tramite la risorsa di caricamento se impostata
addfields.jsp
durante il rendering di<form></form>
-
durante la gestione di un modulo
POST
:-
init.jsp
-
per tutti i vincoli del campo:
servervalidation.jsp
-
validationRT del modulo:
servervalidation.jsp
-
forward.jsp
-
se è stato impostato un percorso di inoltro (
FormsHelper.setForwardPath
), inoltrare la richiesta, quindi chiamarecleanup.jsp
-
se non è stato impostato alcun percorso di inoltro, chiamare
post.POST.jsp
(termina qui, non è stato chiamatocleanup.jsp
)
-
-
-
Sempre nella cartella, se lo desideri, aggiungi:
-
Script per l’aggiunta di campi.
Il nome dello script èaddfields.<extension>
, ad esempioaddfields.jsp
Uno scriptaddfields
viene richiamato immediatamente dopo la scrittura del HTML per l'avvio del modulo. Questo consente all’azione di aggiungere campi di input personalizzati o altri HTML di questo tipo all’interno del modulo. -
Uno script di inizializzazione.
Il nome dello script èinit.<extension>
, ad esempioinit.jsp
Questo script viene richiamato al momento del rendering del modulo. Può essere utilizzato per inizializzare le specifiche dell’azione. -
Uno script di pulizia.
Il nome dello script ècleanup.<extension>
, ad esempiocleanup.jsp
Questo script può essere utilizzato per eseguire la pulizia.
-
-
Utilizza il componente Forms in un parsys. Il menu a discesa Tipo azione includerà ora la nuova azione.
note note NOTE Per visualizzare le azioni predefinite che fanno parte del prodotto: /libs/foundation/components/form/actions
Sviluppo di vincoli di modulo personalizzati developing-your-own-form-constraints
I vincoli possono essere imposti a due livelli:
Vincoli per singoli campi constraints-for-individual-fields
È possibile aggiungere vincoli personalizzati per un singolo campo (in /apps
) come segue:
-
Creare un nodo di tipo
sling:Folder
. Specificare un nome che rifletta il vincolo da implementare.Ad esempio:
/apps/myProject/components/customFormConstraint
-
In questo nodo definisci le seguenti proprietà, quindi fai clic su Salva tutto per mantenere le modifiche:
-
sling:resourceType
- impostato sufoundation/components/form/constraint
-
constraintMessage
- messaggio personalizzato visualizzato se il campo non è valido, in base al vincolo, al momento dell'invio del modulo -
Facoltativamente:
jcr:title
- specifica un titolo desiderato da visualizzare nell'elenco di selezione. Se non è impostato, viene visualizzato il nome del nodohint
- ulteriori informazioni per l'utente su come utilizzare il campo
-
-
All'interno di questa cartella, possono essere necessari i seguenti script:
-
Uno script di convalida client:
Il nome dello script èclientvalidation.<extension>
, ad esempioclientvalidation.jsp
Viene richiamato quando viene eseguito il rendering del campo modulo. Può essere utilizzato per creare JavaScript client per convalidare il campo sul client. -
Uno script di convalida del server:
Il nome dello script èservervalidation.<extension>
, ad esempioservervalidation.jsp
Viene richiamato al momento dell’invio del modulo. Può essere utilizzato per convalidare il campo sul server dopo l’invio.
-
/libs/foundation/components/form/constraints
Vincoli globali del modulo form-global-constraints
La convalida globale del modulo viene specificata configurando un tipo di risorsa nel componente modulo iniziale ( validationRT
). Ad esempio:
apps/myProject/components/form/validation
Puoi quindi definire:
- a
clientvalidation.jsp
- inserito dopo gli script di convalida client del campo - e un
servervalidation.jsp
- chiamato anche dopo le convalide del singolo server di campo su unPOST
.
Mostrare e nascondere i componenti del modulo showing-and-hiding-form-components
È possibile configurare il modulo in modo da mostrare o nascondere i componenti del modulo in base al valore degli altri campi del modulo.
La modifica della visibilità di un campo modulo è utile quando il campo è necessario solo in determinate condizioni. Ad esempio, in un modulo di feedback, una domanda chiede ai clienti se desiderano ricevere informazioni sui prodotti tramite e-mail. Selezionando sì, viene visualizzato un campo di testo che consente al cliente di digitare il proprio indirizzo e-mail.
Utilizzare la finestra di dialogo Modifica regole di visualizzazione/nascondi per specificare le condizioni in cui un componente del modulo viene visualizzato o nascosto.
Utilizzare i campi nella parte superiore della finestra di dialogo per specificare le informazioni seguenti:
- Indica se si stanno specificando le condizioni per nascondere o visualizzare il componente.
- Indica se devono essere soddisfatte alcune o tutte le condizioni per mostrare o nascondere il componente.
Sotto questi campi vengono visualizzate una o più condizioni. Una condizione confronta il valore di un altro componente del modulo (nello stesso modulo) con un valore. Se il valore effettivo nel campo soddisfa la condizione, la condizione restituisce true. Le condizioni includono le seguenti informazioni:
- Titolo del campo modulo che viene testato.
- Un operatore.
- Viene confrontato un valore con il valore del campo.
Ad esempio, un componente Gruppo pulsanti di scelta con il titolo Receive email notifications?
* * contiene Yes
e No
pulsanti di scelta. Un componente Campo di testo con titolo Email Address
utilizza la seguente condizione in modo che sia visibile se Yes
è selezionato:
In JavaScript, le condizioni utilizzano il valore della proprietà Nome elemento per fare riferimento ai campi. Nell'esempio precedente, la proprietà Nome elemento del componente Gruppo pulsanti di scelta è contact
. Il codice seguente è il codice JavaScript equivalente per tale esempio:
((contact == "Yes"))
Per mostrare o nascondere un componente modulo:
-
Modifica il componente modulo specifico.
-
Seleziona Mostra/Nascondi per aprire la finestra di dialogo Modifica regole:
-
Nel primo elenco a discesa, selezionare Mostra o Nascondi per specificare se le condizioni determinano se mostrare o nascondere il componente.
-
Nell’elenco a discesa alla fine della riga superiore, seleziona:
- all - se tutte le condizioni devono essere true per mostrare o nascondere il componente
- any - se solo una o più condizioni devono essere true per mostrare o nascondere il componente
-
Nella riga della condizione, visualizzata come predefinita, selezionare un componente, un operatore e quindi specificare un valore.
-
Se necessario, aggiungere altre condizioni facendo clic su Aggiungi condizione.
Ad esempio:
-
-
Fare clic su OK per salvare la definizione.
-
Dopo aver salvato la definizione, accanto all'opzione Mostra/Nascondi nelle proprietà del componente modulo viene visualizzato il collegamento Modifica regole. Fare clic su questo collegamento per aprire la finestra di dialogo Modifica mostra/nascondi regole per apportare modifiche.
Fare clic su OK per salvare tutte le modifiche.
note caution CAUTION Gli effetti delle definizioni Mostra/Nascondi possono essere visualizzati e testati: -
in modalità Anteprima nell'ambiente di authoring (è necessario ricaricare la pagina al primo passaggio all'anteprima)
-
sull’ambiente di pubblicazione
-
Gestione dei riferimenti ai componenti interrotti handling-broken-component-references
Le condizioni Show/hide utilizzano il valore della proprietà Element Name per fare riferimento ad altri componenti del modulo. La configurazione Mostra/Nascondi non è valida quando una delle condizioni fa riferimento a un componente eliminato o la cui proprietà Nome elemento è stata modificata. Quando si verifica questa situazione, è necessario aggiornare manualmente le condizioni o si verifica un errore durante il caricamento del modulo.
Quando la configurazione Mostra/Nascondi non è valida, viene fornita solo come codice JavaScript. Modifica il codice per risolvere i problemi. Il codice utilizza la proprietà Nome elemento utilizzata in origine per fare riferimento ai componenti.
Sviluppo di script da utilizzare con Forms developing-scripts-for-use-with-forms
Per ulteriori informazioni sugli elementi API che possono essere utilizzati durante la scrittura di script, vedi JavaScript relativi ai moduli.
È possibile utilizzarlo per azioni quali la chiamata di un servizio prima dell’invio del modulo e l’annullamento del servizio in caso di errore:
-
Definire il tipo di risorsa di convalida
-
Includi uno script per la convalida:
- Nel JSP, chiamare il servizio Web e creare un oggetto
com.day.cq.wcm.foundation.forms.ValidationInfo
contenente i messaggi di errore. In caso di errori, i dati del modulo non verranno registrati.
- Nel JSP, chiamare il servizio Web e creare un oggetto