2016-06-15 6 views
0

Ich habe ein Formular in AEM. Wenn der Submit-Button angeklickt wird, geht das Control zu forward.jsp. Ich habe einige Validierungen in forward.jsp durchgeführt und möchte nach der fehlgeschlagenen Validierung auf der Seite eine Warnung generieren. Wie kann ich die Warnung an die Seite weitergeben?AEM: Anzeige eines Meldungsfelds nach serverseitiger Validierung

if(condition){ 
    // validation success 
} else{ 
    // code for alert 
} 

FormsHelper.redirectToReferrer(slingRequest, slingResponse); 

Antwort

0

Wenn Sie die Validierungsserver-Seite tun wollen, aber eine Warnung Client-Seite zeigen, empfehle ich Sie JavaScript verwenden, um einen AJAX-Aufruf zu machen. Sie können die Übermittlungsschaltfläche ändern, sodass beim Klicken ein AJAX-Aufruf ausgelöst wird, anstatt ein Formular zu senden. Eine Beschreibung, wie dies mit jQuery gemacht werden könnte, siehe http://api.jquery.com/jquery.ajax/, aber andere Optionen würden auch funktionieren, um die AJAX-Anfrage zu machen.

In der Antwort auf diese AJAX-Anfrage können Sie setzen, was Sie brauchen. Dies kann ein Statuscode, eine JSON-Zeichenfolge oder ein HTML-Klappentext sein. Sie würden dann clientseitiges JavaScript schreiben, um die Antwort zu verarbeiten und basierend auf der gegebenen Antwort alles zu tun, was angemessen ist - z. B. eine Warnung auf der Seite anzeigen.

Ein Beispiel für diese Art von Ansatz, wenn http://michaelsoriano.com/how-to-ajax-validate-forms/

0

an gesehen könnten Dieses Thema ist komplizierter, dass Sie denken. Im Grunde können Sie die Beispielimplementierung in den Basiskomponenten wie /libs/foundation/components/form/text/text.jsp sehen. Sie alle verwenden die Methode com.day.cq.wcm.foundation.forms.LayoutHelper # printErrors, um zu überprüfen, ob es sich um Fehler im Feld handelt. Dies geschieht über die Klasse com.day.cq.wcm.foundation.forms.ValidationInfo, die als Anforderungsattribut festgelegt wird, um den Feldstatus zwischen den verschiedenen Klassen zu übertragen. Sie können auch die com.day.cq.wcm.foundation.forms.FieldHelper-Klasse überprüfen, die tatsächlich die Validierung durchführt. Eine Art Logik in das forward.jsp zu setzen ist die falsche Art