JSTL EL条件错误

时间:2011-06-07 19:28:54

标签: java jsp jstl

我使用JSTL使用以下条件检查,但抛出错误“javax.servlet.jsp.el.E​​LException:没有函数映射到名称”fn:length“
<c:choose>
<c:when test='${fn:length(studentData.rollNumber) == "0"}'> Found Nothing </c:when> <c:otherwise> Found something </c:otherwise> </c:choose>
< / p>

我在这里做错了什么?我只需要比较卷号的长度。

2 个答案:

答案 0 :(得分:2)

根据documentationfn:length()仅适用于String(将返回String#length()方法的值)和Collection上的fn:length()返回Collection#size()方法的值)。

然而,您似乎传递了数字。整数等等。 false不对数字起作用,并且总是会null,而不管数字的值是多少。

如果您想检查某些内容是否为<c:choose> <c:when test="${studentData.rollNumber == null}">Found Nothing</c:when> <c:otherwise>Found something</c:otherwise> </c:choose> ,请执行以下操作:

0

或者,如果您想检查数字的值是否为<c:choose> <c:when test="${studentData.rollNumber == 0}">Found Nothing</c:when> <c:otherwise>Found something</c:otherwise> </c:choose> ,那么只需执行

empty

请注意,null检查同样有效,无论是数字,字符串还是集合。任何fn:length()0 true的内容都会评估<c:choose> <c:when test="${empty studentData.rollNumber}">Found Nothing</c:when> <c:otherwise>Found something</c:otherwise> </c:choose>

{{1}}

答案 1 :(得分:1)

添加

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

并制定如下条件

<c:when test="${fn:length(studentData.rollNumber) == 0}">