2009-06-15 6 views
5

Je cet extrait de code JSP:Comment échapper un caractère dans EL avec une balise 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> 

La JSP ne peut pas être compilé par le serveur. Cependant, si je supprime le caractère "'" de "Animal's Part", il est compilable. J'ai essayé d'y échapper en utilisant le caractère "\" mais cela me donne toujours une erreur.

Toute suggestion/aide est appréciée. J'ai essayé d'éviter d'utiliser scriptlet si possible.

Merci.

EDIT: J'ai réussi à le faire fonctionner (après avoir posté sur StackOverflow), posté comme l'une des solutions à cette question. J'ai essayé d'autre solution postée avant cela (par Vincent et Eddie), cependant, malheureusement, aucun ne fonctionne dans mon environnement, bien que je pense qu'ils pourraient fonctionner dans l'environnement des réponses. Merci.

+0

Dans quel environnement la solution d'Eddie/Vincent n'a pas fonctionné? – hop

Répondre

3

c'est la solution qui fonctionne Mon cas d'utilisation:

<%@ 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 ** et ** item_treepart ** sont des définitions redondantes – gavenkoa

6

essayer

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

Utilisez escapeXml = "false" Par exemple:

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

Vous avez deux choix facile:

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

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