我使用JSTL使用以下条件检查,但抛出错误“javax.servlet.jsp.el.ELException:没有函数映射到名称”fn:length“
<c:choose>
< / p>
<c:when test='${fn:length(studentData.rollNumber) == "0"}'>
Found Nothing
</c:when>
<c:otherwise>
Found something
</c:otherwise>
</c:choose>
我在这里做错了什么?我只需要比较卷号的长度。
答案 0 :(得分:2)
根据documentation,fn: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}">