Как избежать персонажа в EL с тегом JSTL? - PullRequest
5 голосов
/ 15 июня 2009

У меня есть этот фрагмент кода JSP:

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

JSP не может быть скомпилирован сервером. Однако, если я уберу символ «» из «Части животного», он будет скомпилирован. Я пытался избежать этого, используя символ "\", но он все равно выдает ошибку.

Любое предложение / помощь приветствуется. Я старался по возможности избегать использования скриптлета.

Спасибо.

РЕДАКТИРОВАТЬ : мне удалось заставить его работать (после публикации в StackOverflow), опубликованном как одно из решений в этом вопросе. Я попробовал другое решение, опубликованное ранее (Винсентом и Эдди), однако, к сожалению, ни одно из них не работает в моей среде, хотя я считаю, что они могут работать в среде ответов. Спасибо.

Ответы [ 4 ]

6 голосов
/ 15 июня 2009

попробуйте

<c:when test='${var1.properties["Item Type"] eq "Animal\'s Part"}'>
3 голосов
/ 15 июня 2009

это решение, которое работает в моем случае использования:

<%@ 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>
3 голосов
/ 15 июня 2009

У вас есть два простых варианта:

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

<c:when test='${var1.properties["Item Type"] eq "Animal\'s Part"}'>
0 голосов
/ 15 июня 2009

Использовать escapeXml = "false" Например:

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