2009-06-15 66 views
5

我有这样的JSP代码片段:如何使用JSTL标签逃避EL中的字符?

<%@ 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不能由服务器进行编译。但是,如果我从“动物的部分”中删除了字符“'”,它是可编辑的。我试图通过使用“\”字符来逃避它,但它仍然给我错误。

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

谢谢。

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

+0

在哪个环境中Eddie's/Vincent的解决方案无效? – hop 2012-01-30 02:53:28

回答

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> 
+0

** item_animalpart **和** item_treepart **是冗余定义 – gavenkoa 2012-11-26 12:48:05

6

试试这个

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

使用将escapeXml = “假” 例如:

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

你有两个简单的选择:

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

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