0

我正在尝试比较 jsp 文件中两个字符串的值。这两个字符串都包含一个撇号'。这些字符串有些来自不同的来源。

当我像这样直接比较两个字符串时:

<c:if test="${ fn:toLowerCase(colorInfo.value.name) eq fn:toLowerCase(colorName) }">
    hello!
</c:if>

比较返回错误。但是,当我打印出这两个值时,我看到

迈克的绿色

迈克的绿色

在上一步中,这些字符串被修剪为这不是空格问题。无论出于何种原因,当存储为变量时,这两个中的一个与 xml 转义撇号一起存储

&#39;

为了证明这一点,我将比较修改为以下内容:

<c:set var="apostrophe" value="'" />

<%-- I'm multilining this purely for readability on SO, it's 1 line in the code --%>
<c:if test="${ 
    fn:replace(fn:toLowerCase(colorInfo.value.name), '&#39;', apostrophe) 
    eq 
    fn:replace(fn:toLowerCase(colorName), '&#39;', apostrophe) 
}">
    hello!
</c:if>

此比较返回 true。因此,两个字符串之一在存储时具有文字 xml 转义版本的撇号。

是否有更有效的方法来转义存储的 jsp 变量中的任何 xml 字符串? 这是一种非常丑陋的比较方式,而且它不容易扩展,好像未来的字符串有其他不正确转义的字符,那么我需要在这个逻辑中添加更多代码。

4

0 回答 0