2009-06-15 12 views
5

JSTLタグでELの文字をエスケープする方法は?私は、この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は、サーバによってコンパイルすることはできません。しかし、「動物の部分」から文字「 '」を取り除くと、それはコンパイル可能です。私は "\"文字を使用してそれをエスケープしようとしましたが、それでもエラーが出ます。

ご意見・ご協力をお願いいたします。可能であれば、スクリプトレットの使用を避けようとしました。

ありがとうございました。

EDIT:私はこの問題の解決策の1つとして掲示された(StackOverflowへの投稿後に)それを稼働させることができました。私はそれ以前に(VincentとEddieによる)他の解決策を試みましたが、残念なことに私の環境では動作しませんが、答えの環境で動作するかもしれないと思います。ありがとう。

+0

Eddie's/Vincentのソリューションがうまくいきませんでしたか? – hop

答えて

3

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

** item_animalpart **と** item_treepart **は重複した定義です – gavenkoa

6

は、例えば、この

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

使用escapeXml = "false" を を試してみてください。これはで動作するソリューションです

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

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

あなたが2つの簡単な選択肢を持っています私の使用例:

<%@ 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> 
関連する問題