Ich habe ein POST-Servlet wie unten erstellt:AEM 6.3: Fehler beim POST Servlets Aufruf
Ich rufe das Servlet mit resource und Selektor-Servlet wird über ein Formular aufgerufen wird:
<div id = "sign-up" style ="padding-top:6%;padding-left:2%">
<div>
<h1 style="font-size:2em">Subscribe to Newsletters</h1>
<form name = "subscriptionForm" method = "POST" action="/content/aemsite/en/subscribe.newsletters.html" id="subscriptionForm">
<input type="text" name="name" id="name" placeholder="Name" style="margin-bottom:1%;width:30%"/>
<input type="text" name="email" id="email" placeholder="E-mail" style="margin-bottom:1%;width:30%"/>
<input type="submit" name="signup_submit" value="Sign me up" style="margin-bottom:3%"/>
</form>
</div>
</div>
dies ist die JavaScript-Datei, die wie enthalten ist
$(function() {
$('#subscriptionForm').submit(function(e) {
e.preventDefault(); //STOP default action
var formURL = $(this).attr("action");
var method = $(this).attr("method");
var name = $('#name').val();
var email = $('#email').val();
var form_data = $(this).serialize();
console.log('inside subscription form '+form_data+' formURL '+formURL);
$.ajax({
type:method,
url:formURL,
data: form_data, success:function(data){
}
});
});
});
clientlibs ich die jQu bin mit Die Lieferung erfolgt sofort mit AEM. Wenn ich das Formular abschicke, wirft es einige Fehler auf. Dies sind die Fehler, die ich sehe:
Failed to load resource: the server responded with a status of 500 (Server Error)
Die oben ist der Fehler, den ich auf dem Chrom debuuger sehe. In der Datei error.log sehe ich diesen Fehler:
20.11.2017 22:13:42.802 *ERROR* [0:0:0:0:0:0:0:1 [1511234022796] POST /content/aemsite/en/subscribe.newsletters.html HTTP/1.1] org.apache.sling.servlets.post.impl.operations.ModifyOperation Exception during response processing.
javax.jcr.nodetype.ConstraintViolationException: No matching property definition: name = aemsite
und
POST /content/aemsite/en/subscribe.newsletters.html HTTP/1.1] org.apache.sling.jcr.resource.internal.helper.JcrPropertyMapCacheEntry converToType: Cannot convert value of 2017/11/18 02:28:18 to class java.util.Calendar
java.lang.IllegalArgumentException: Not a date string: 2017/11/18 02:28:18
Es sieht aus wie die POST-Anforderung versucht, eine Eigenschaft zu speichern, aber im Servlet alles, was ich zu tun versuche, ist Ausgabe der Logger-Nachricht, die in der doPost-Methode des Servlets festgelegt wurde. Wenn ich den Anforderungstyp von POST zu GET ändere, verschwinden die Fehler und das Servlet wird aufgerufen.
Ich hatte gelesen, dass seit AEM 6 mehr Sicherheitsmaßnahmen für POST-Anfrage übernommen werden und daher ein CSRF-Token verwendet wird, aber es wird meist gehandhabt, wenn die AEM-Version von jQuery verwendet wird.
Ich bin mir nicht sicher, was ich falsch mache. Jede Hilfe wird geschätzt.
Vielen Dank im Voraus
UPDATE:
Ergebnis jcrresolver Mapping
Haben Sie überprüft, ob die URL '/ content/aemsite/de/subscribe.newsletters.html' korrekt in Ihr Servlet aufgelöst wird? Sie können dies über die Resource Resolver Konsole '/ system/console/jcrresolver' überprüfen. Überprüfen Sie auch, ob Ihr Servlet aktiv ist. – rakhi4110
Vielen Dank für die Antwort. Ich kann bestätigen, dass das Servlet aktiv ist und ich habe den Screenshot des Jcrresolvers angehängt. – user972418