5

我有这个 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 不能被服务器编译。但是,如果我从“Animal's Part”中删除字符“'”,它是可编译的。我试图通过使用“\”字符来逃避它,但它仍然给我错误。

任何建议/帮助表示赞赏。如果可能,我尽量避免使用 scriptlet。

谢谢。

编辑:我设法让它工作(在发布到 StackOverflow 之后),作为这个问题的解决方案之一发布。我尝试了之前发布的其他解决方案(文森特和埃迪),但是,不幸的是,没有一个在我的环境中有效,尽管我认为它们可能在答案的环境中有效。谢谢。

4

4 回答 4

6

试试这个

<c:when test='${var1.properties["Item Type"] eq "Animal\'s Part"}'>
于 2009-06-15T02:33:52.493 回答
3

您有两个简单的选择:

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

<c:when test='${var1.properties["Item Type"] eq "Animal\'s Part"}'>
于 2009-06-15T02:58:04.773 回答
3

这是适用于我的用例的解决方案:

<%@ 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>
于 2009-06-15T03:33:46.343 回答
0

使用 escapeXml="false" 例如:

<c:out value="${formulario}" escapeXml="false" />
于 2009-06-15T02:35:10.010 回答