2009-06-15 4 views
5

Ich habe diesen Schnipsel JSP-Code:Wie man Zeichen in EL mit JSTL-Umbau entkommt?

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 

<c:choose> 
    <c:when test="${var1.properties[\"Item Type\"] eq \"Animal's Part\"}"> 
    <c:set var="cssClassName" value="animalpart" /> 
    </c:when> 
    <c:otherwise> 
    <c:set var="cssClassName" value="" /> 
    </c:otherwise> 
</c:choose> 

Die JSP können vom Server nicht kompiliert werden. Wenn ich jedoch das Zeichen "'" aus "Animal's Part" entferne, ist es kompilierbar. Ich habe versucht, mit dem Zeichen "\" zu entkommen, aber es gibt mir immer noch einen Fehler.

Jeder Vorschlag/Hilfe wird geschätzt. Ich habe versucht, Scriptles möglichst zu vermeiden.

Danke.

BEARBEITEN: Ich schaffte es zu arbeiten (nach dem Posten in StackOverflow), als eine der Lösung in dieser Frage geschrieben. Ich habe andere Lösungen ausprobiert, die vorher geschrieben wurden (von Vincent und Eddie), aber leider funktioniert das in meiner Umgebung nicht, obwohl ich denke, dass sie in der Umgebung der Antworten funktionieren könnten. Vielen Dank.

+0

In welcher Umgebung Eddie's/Vincent's Lösung hat nicht funktioniert? – hop

Antwort

3

dies die Lösung, die in arbeitet Mein Anwendungsfall:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 

<c:set var="itemType"  value="${var1.properties[\"Item Type\"]}" /> 
<c:set var="item_animalpart" value="Animal's Part" /> 
<c:set var="item_treepart" value="Tree's Part" /> 

<c:choose> 
    <c:when test="${itemType eq name_item_animalpart}"> 
    <c:set var="cssClassName" value="animalpart" /> 
    </c:when> 
    <c:when test="${itemType eq name_item_treepart}"> 
    <c:set var="cssClassName" value="treepart" /> 
    </c:when> 
    <c:otherwise> 
    <c:set var="cssClassName" value="" /> 
    </c:otherwise> 
</c:choose> 
+0

** item_animalpart ** und ** item_treepart ** sind redundante Definitionen – gavenkoa

6

versuchen, diesen

<c:when test='${var1.properties["Item Type"] eq "Animal\'s Part"}'> 
0

Verwenden escapeXml = "false" Zum Beispiel:

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

Sie haben zwei einfache Möglichkeiten:

<c:when test="${var1.properties['Item Type'] eq 'Animal\'s Part'}"> 

<c:when test='${var1.properties["Item Type"] eq "Animal\'s Part"}'>