In meiner Webanwendung versuche ich zu verhindern, dass Benutzer JavaScript in den freeText-Parameter einfügen, wenn sie eine Suche ausführen.Wie wird eine Abfragezeichenfolge in einer Apache Velocity-Vorlage ersetzt?
Um dies zu tun, habe ich Code in der Header Velocity-Datei geschrieben, um zu überprüfen, ob die Abfragezeichenfolge einen Parameter namens freeText enthält, und wenn ja, verwenden Sie die Methode ersetzen, um die Zeichen innerhalb des Parameterwerts zu ersetzen. Wenn Sie jedoch die Seite laden, wird weiterhin die ursprüngliche Abfragezeichenfolge angezeigt. Ich bin mir nicht sicher, wie ich die ursprüngliche Abfragezeichenfolge durch meine neue Zeichenfolge mit den ersetzten Zeichen ersetzen kann.
Dies ist mein Code:
#set($freeTextParameter = "$request.getParameter('freeText')")
freeTextParameter: $freeTextParameter
#if($freeTextParameter)
##Do the replacement:
#set($replacedQueryString = "$freeTextParameter.replace('confirm','replaced')")
replacedQueryString after doing the replace: $replacedQueryString
The query string now: $request.getQueryString()
The freeText parameter now: $request.getParameter('freeText')
#end
In dem obigen Code hat der replacedQueryString Variable wie erwartet geändert (dh der Ersatz wie erwartet durchgeführt wurde), aber der $ request.getQueryString() und $ request.getParameter ('freeText') sind immer noch die gleichen wie zuvor, als ob die Ersetzung nie stattgefunden hätte.
Da es eine request.getParameter-Methode gibt, die zum Abrufen der Parameter geeignet ist, ging ich davon aus, dass eine request.setParameter-Methode dasselbe in umgekehrter Reihenfolge ausführen würde, aber nicht.
Darf ich fragen, was Sie von diesem Ersatz erwarten? (Natürlich, anders als eine neue Zeichenfolge, wo die alte war. Welchen Prozess willst du ändern/verhindern?) Ich frage, weil ich denke, dass es zu spät sein könnte, dies zu tun, während die Ansicht ** nach * * eine Anfrage und ** serverseitig **. – MyBrainHurts