2009-06-15 11 views
5

tengo este código JSP fragmento:¿Cómo escapar de personaje en EL con etiqueta JSTL?

<%@ 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> 

El JSP no puede ser compilado por el servidor. Sin embargo, si elimino el carácter "'" de "Animal's Part", es compilable. Intenté escapar usando el carácter "\", pero aún así me da error.

Cualquier sugerencia/ayuda es apreciada. Traté de evitar el uso de scriptlet si es posible.

Gracias.

EDIT: Me las arreglé para que funcione (después de publicar en StackOverflow), publicado como una de la solución en esta pregunta. Probé otra solución publicada antes (por Vincent y Eddie), sin embargo, desafortunadamente, ninguna funciona en mi entorno, aunque creo que podrían funcionar en el entorno de las respuestas. Gracias.

+0

¿En qué situación la solución de Eddie's/Vincent no funcionó? – hop

Respuesta

3

Ésta es la solución que funciona en mi caso de uso:

<%@ 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 ** y ** item_treepart ** son definiciones redundantes – gavenkoa

6

probar este

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

Uso escapeXml = "false" Por ejemplo:

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

Usted tiene dos opciones fáciles:

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

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