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」から文字「'」を削除すると、コンパイル可能になります。「\」文字を使用してエスケープしようとしましたが、それでもエラーが発生します。

任意の提案/ヘルプをいただければ幸いです。可能であれば、スクリプトレットの使用を避けようとしました。

ありがとう。

編集:この質問の解決策の1つとして投稿された(StackOverflowに投稿した後)、なんとか機能させることができました。その前に投稿された他のソリューション(VincentとEddieによる)を試しましたが、残念ながら、回答の環境では機能する可能性があると思いますが、私の環境では機能しません。ありがとう。

4

4 に答える 4

6

これを試して

<c:when test='${var1.properties["Item Type"] eq "Animal\'s Part"}'>
于 2009-06-15T02:33:52.493 に答える
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 に答える