Pergunta

Eu tenho este trecho de código 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>

O JSP não pode ser compilado pelo servidor. No entanto, se eu remover o caractere """ da 'Parte do Animal', é compilable. Tentei escapar-lo usando "\" personagem, mas ainda me dá erro.

Qualquer sugestão / ajuda é apreciada. Tentei evitar o uso de scriptlet se possível.

Graças.

Editar : eu consegui fazê-lo funcionar (depois de postagem para StackOverflow), postado como uma das soluções nesta questão. Tentei outra solução postada antes disso (por Vincent e Eddie), no entanto, infelizmente, nenhum funciona no meu ambiente, embora eu acho que eles poderiam obras no ambiente das respostas. Obrigado.

Foi útil?

Solução 3

Esta é a solução que funciona em meu 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>

Outras dicas

Tente este

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

Você tem duas opções fáceis:

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

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

Use escapeXml = "false" Por exemplo:

<c:out value="${formulario}" escapeXml="false" />
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top