在JSP中使用EL时出错:“当未指定默认命名空间时,函数contains必须与前缀一起使用”

时间:2012-07-30 06:49:40

标签: jsp jstl el

在我的jsp页面中,我指定:

<c:choose>
line 1: <c:when test="${com.community_classification_id.contains('1')}">
            <input type="checkbox" id="by_invitation1"   name="invitaion" value="1" checked="true">By Invitation<span style="padding-left:28px"></span>
        </c:when>
        <c:otherwise>
            <input type="checkbox" id="by_invitation1"   name="invitaion" value="1">By Invitation<span style="padding-left:28px"></span>
        </c:otherwise>
</c:choose>

但@line没有。 1它给我带来500错误

The function contains must be used with a prefix when a default namespace is not specified

我无法理解。怎么了?

2 个答案:

答案 0 :(得分:6)

检查出来:JSTL fn:contains() function

用于在另一个内部找到一个String(我想这是你想要实现的)

在您的代码中:

<c:choose>
    <c:when test="${fn:contains(com.community_classification_id, '1')}">
        <input type="checkbox" id="by_invitation1" name="invitaion" value="1" checked="true">By Invitation<span style="padding-left:28px"></span>
    </c:when>
    <c:otherwise>
        <input type="checkbox" id="by_invitation1" name="invitaion" value="1">By Invitation<span style="padding-left:28px"></span>
    </c:otherwise>
</c:choose>

不要忘记在JSP中包含taglib以使用它:

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

答案 1 :(得分:1)

您可以在EL中使用静态方法(我假设com.community_classification_id.contains是),但首先必须定义自定义EL函数。

检查this answerthis answer,其中显示了如何在JSP中创建和使用EL函数。然后记住要导入你的taglib并使用带有前缀的静态方法,如这些答案所示。