AEM as a Cloud Service: l’invio della finestra di dialogo ignora la convalida del campo richiesto con lo script personalizzato

Questo articolo spiega come risolvere un problema in Adobe Experience Manager as a Cloud Service in cui le finestre di dialogo dei componenti possono essere inviate anche se i campi obbligatori non sono compilati, in genere a causa di uno script personalizzato lato client che sovrascrive la convalida standard.

Descrizione description

Ambiente

Ambienti Adobe Experience Manager as a Cloud Service (AEMaaCS) e AEM SDK.

Sintomi

  • Una finestra di dialogo di un componente contiene un campo di testo con convalida personalizzata e un campo di percorso contrassegnato come obbligatorio.
  • Negli ambienti AEM SDK, non è possibile inviare la finestra di dialogo se i campi obbligatori sono vuoti o se la convalida non riesce.
  • Negli ambienti AEM as a Cloud Service, la finestra di dialogo consente l’invio anche quando i campi obbligatori non sono compilati o la convalida non riesce.
  • La convalida personalizzata visualizza il messaggio di errore, ma facendo clic sul pulsante Fine il modulo viene comunque inviato.

Esempio di configurazione del campo:

<alt
    jcr:primaryType="nt:unstructured"
    sling:resourceType="granite/ui/components/coral/foundation/form/textfield"
    validation="testing.test"
    fieldDescription="Alternative text for image"
    fieldLabel="Alt text"
    name="./alt"/>
<linkURL
    jcr:primaryType="nt:unstructured"
    sling:resourceType="granite/ui/components/coral/foundation/form/pathfield"
    required="{Boolean}true"
    fieldDescription="Link"
    fieldLabel="Link"
    name="./linkURL"/>

Causa

Uno script di convalida lato client personalizzato registra un gestore di clic globale per il pulsante Invia finestra di dialogo. Questo gestore intercetta tutti gli invii delle finestre di dialogo e invia direttamente il modulo, ignorando la convalida standard dell’interfaccia utente Granite. Di conseguenza, le finestre di dialogo vengono inviate anche quando i campi obbligatori sono vuoti o la convalida personalizzata non riesce.

Risoluzione resolution

Per risolvere il problema, segui i passaggi seguenti:

  1. Esaminare gli script di convalida personalizzati lato client, in particolare quelli che registrano i gestori eventi per l’invio delle finestre di dialogo (ad esempio i gestori per il pulsante Invia finestra di dialogo ).
  2. Assicurati che qualsiasi gestore personalizzato intercetti solo l’invio per la finestra di dialogo o il campo desiderato (ad esempio, verificando la presenza di un multifield o un contesto di dialogo specifico prima di agire).
  3. Eseguire il refactoring del gestore in modo che e.stopPropagation() e e.preventDefault() vengano chiamati solo dopo aver confermato che il gestore sta gestendo la finestra di dialogo desiderata. Per tutte le altre finestre di dialogo, consenti al flusso di convalida e invio standard di AEM di procedere senza interferenze.
  4. Rimuovi eventuali logiche di fallback che inviano direttamente il modulo per finestre di dialogo diverse da quella desiderata.
  5. Ridistribuisci l’applicazione.
  6. Verifica che l’invio della finestra di dialogo sia ora bloccato correttamente se i campi obbligatori non sono compilati o se la convalida non riesce.
recommendation-more-help
experience-cloud-kcs-help-kbarticles