webentwicklung-frage-antwort-db.com.de

JSTL für Sonderzeichen

Ich habe dieses seltsame Problem mit Sonderzeichen ..__ In JSP verwende ich Feldname als ID und der Name kann beliebig sein

id="<1 and &>2" (OR)
id="aaa & bbb"

Ich habe keine andere Möglichkeit, andere IDs als Namen zu verwenden, das ist das einzige, was ich vom Backend bekomme.

Gibt es eine Logik, um alle Sonderzeichen mithilfe von JSTL zu entfernen .. Im aktuellen Szenario werde ich in JS einige Vorgänge mit der ID ausführen. Dies verursacht viele Probleme für jede Art von Browser.

Bitte schlage vor, Danke im Voraus ...

25
Max

Die JSTL bietet zwei Möglichkeiten, um HTML-Sonderzeichen zu umgehen:

<%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core" %>
...
<c:out value="${myName}"/> 

und

${fn:escapeXml(myName)}

Beide werden die Sonderzeichen in ihre jeweiligen HTML-Entitäten umwandeln: (< wird zu &lt;, & wird zu &amp;...).

Beachten Sie, dass die IDs in HTML codiert sein müssen, nicht jedoch in JavaScript.

46
JB Nizet

Ich denke, Ihre Frage wurde missverstanden ... Ich bin an der gleichen Stelle wie Sie angekommen und habe das Problem mit excapeXml = "false" gelöst. 

<c:out value="${id}" escapeXml="false"/> 

Ich hatte Daten in der Datenbank wie:

& lt; Hallo Welt & gt;

und escapeXml = "false" hat es angezeigt

<Hello World>
20
James

Ich denke, das ist was du suchst

Verwenden Sie Spring HtmlUtils.htmlEscape (Zeichenfolgeingabe).

2
Ramesh PVK

Ich war gerade mit einem Szenario konfrontiert, in dem ich entkommen musste, d. H. Das Einzelzitat abgesehen von anderen Sonderzeichen. In diesem Fall schlug fn: escapeXml fehl. Also habe ich JavaScriptUtils.javaScriptEscape () von Spring API verwendet, ein Tag erstellt und angewendet. Nun ist das Problem gelöst. Ich verwies auch auf die URL: http://www.coderanch.com/t/528521/JSP/Java/Passing-JSTL-variable-special-zeichen .

1
RKH