2011-06-07 95 views
0

我使用以下条件检查使用JSTL,但其引发错误“javax.servlet.jsp.el.E​​LException:无功能被映射到名为‘FN:长度’
<c:choose>
<c:when test='${fn:length(studentData.rollNumber) == "0"}'> Found Nothing </c:when> <c:otherwise> Found something </c:otherwise> </c:choose>
JSTL EL条件误差

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

+0

你也可以使用'$ {空studentData.rollNumber}'。 – BalusC 2011-06-07 19:46:49

回答

2

作为每documentation,所述fn:length()仅适用于String(这将返回String#length()方法的值)和上Collection(这将返回Collection#size()方法的值)。

但是,您好像要通过号码。一个整数或其他东西。 fn:length()不适用于数字,并且总是会给出false,而不考虑数字的值。

如果您要检查,如果事情是null,那么就这样做:

<c:choose> 
    <c:when test="${studentData.rollNumber == null}">Found Nothing</c:when> 
    <c:otherwise>Found something</c:otherwise> 
</c:choose> 

或者,如果你想检查数的值是0,然后就去做

​​

请注意,empty检查工作同样好,这是无论它是一个数字,字符串或集合。任何是nullfn:length()0将评估true

<c:choose> 
    <c:when test="${empty studentData.rollNumber}">Found Nothing</c:when> 
    <c:otherwise>Found something</c:otherwise> 
</c:choose> 
+0

BalusC,对不起,我没看到你的回复。你是对的,它是固定的。 – t0mcat 2011-06-07 21:32:00

+0

啊.......笨我。 – 2011-06-08 07:06:32

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

尽管我有taglibs:JSPG0227E:翻译时捕获异常/WEB-INF/jsp/provider/splashPage.jsp:JSPG0095E:无法使用uri http:// java找到tld中的el函数长度。 sun.com/JSP/Page – t0mcat 2011-06-07 19:34:51

+0

击中F5,重新检查taglib uri。 – 2011-06-07 19:35:48

+0

你可能想要在应用程序服务器上更新你的问题 – 2011-06-07 19:35:55